81901836 2012-11-26
下面长话短说
技术架构:
Spring MVC(RESTFul)+Spring+JPA(Hibernate)
应用软件
Apache+Resin+Window/Linux+MySQL/SqlServer/Oracle/DB2
传统的apache+resin配置(官方教程),apache能够处理静态内容,resin处理jsp、servlet内容
但由于使用RESTFul架构后,大部分的Controller访问地址都无后续名,导致resin不去解析,传统配置无效
(PS:Tomcat 的AJP模块支持排除响应方式,因此无这个问题)
因此,这对这种环境和需求,可以参考下面的配置,通过反向代理形式实现:
#resin配置
#LoadModule caucho_module C:/resin3.1/win32/apache-2.2/mod_caucho.dll
#ResinConfigServer localhost 6800
#CauchoConfigCacheDirectory /tmp
#CauchoStatus yes
#<Location /caucho-status>
#SetHandler caucho-status
#</Location>
#
#由于apache+resin的旧配置,无法处理restfull的应用
#因此,当需要使用apache+resin,同时也要全网支持restfull,暂时只能使用反响代理模式
#
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot "C:/www/cms"
ServerName localhost
ErrorLog "logs/dummy-host2.localhost-error.log"
CustomLog "logs/dummy-host2.localhost-access.log" common
ProxyPreserveHost On
ProxyPassMatch ^(/.*\.htm)$ !
ProxyPassMatch ^(/.*\.html)$ !
ProxyPassMatch ^(/.*\.shtml)$ !
ProxyPassMatch ^(/.*\.css)$ !
ProxyPassMatch ^(/.*\.js)$ !
ProxyPassMatch ^(/.*\.gif)$ !
ProxyPassMatch ^(/.*\.jpg)$ !
ProxyPassMatch ^(/.*\.jpeg)$ !
ProxyPassMatch ^(/.*\.png)$ !
ProxyPass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/
#<Proxy *>
#Order Deny,Allow
#Allow from all
#</Proxy>
<Directory "C:/www/cms">
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
但用过apache反向代理的人都知道,它也会带来其它问题,如ip获取、路径获取、域名等。
这些都需要开发人员去对应。