假设:
项目需要做 URL Rewrite,不想用 UrlRewriteFilter 集成到应用程序里去,于是就选用一些 Web Server 来做,后来选了 Apache,但是又懒,不想每台开发机器都去做配置,因为确实很麻烦,规则变了又要每台开发机器都去同步,如果是 Linux 还好一点,可以 mount 一下。
有四台开发机器,IP 分别为:
192.168.1.10(Apache)
192.168.1.20(A同事)
192.168.1.30(B同事)
192.168.1.40(C同事)。
在192.168.1.10上部署一个 Apache,做 Rewrite 规则,然后统一分发到另外三台机器上。可是每位同事的开发机器上的项目的版本有可能不一致,而且还要根据各自手头上的版本来调试。
也就是说:A同事启动了应用程序,请求192.168.1.10的 Apache,享受了一了Rewrite 规则,然后被分发回A同事的 Tomcat
既然这样,每位同事都要弄个标识才行,端口是不错的选择:
A同事:1020
B同事:1030
C同事:1040
OK,标识分好了,就开始做配置了,Apache 的版本采用2.2,结合几个Module:
mod_rewrite
mod_proxy
mod_proxy_ajp/mod_proxy_http
在 make/make install Apache 前的 configure 加入几个参数:
./configure --enable-rewrite --enable-proxy --enable-proxy-ajp --enable-proxy-http
到 httpd.conf 了,当然少不了的是把 Module 们 load 进来:
LoadModule proxy_module modules/mod_proxy.so
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_http_module modules/mod_proxy_http.so
把几位同事对应的端口也配进去:
#A同事
Listen 1020
#B同事
Listen 1030
#C同事
Listen 1040
既然每位同事都有一台开发机器,那么就给他们每人多配一台虚拟机器吧:
#A同事
<VirtualHost *:1020></VirtualHost>
#B同事
<VirtualHost *:1030></VirtualHost>
#C同事
<VirtualHost *:1040></VirtualHost>
差点忘了proxy,Oops。都配上 mod_proxy_ajp 吧,免得麻烦。
在这个时候,C同事的孩子气来了,他说他一定要 mod_proxy_http,。。。。。
#顺被带上RewriteRule
#A同事
<VirtualHost *:1020>
ProxyPass / ajp://192.168.1.20:8009/
ProxyPassReverse / ajp://192.168.1.20:8009/
RewriteEngine On
#RewriteRule... ...
</VirtualHost>
#B同事
<VirtualHost *:1030>
ProxyPass / ajp://192.168.1.30:8009/
ProxyPassReverse / ajp://192.168.1.30:8009/
RewriteEngine On
#RewriteRule... ...
</VirtualHost>
#C同事
<VirtualHost *:1040>
ProxyPass / http://192.168.1.40:8080/
ProxyPassReverse / http://192.168.1.40:8080/
RewriteEngine On
#RewriteRule... ...
</VirtualHost>
个人感觉 mod_proxy 的风格比 mod_jk 好。 但是有一点很不爽,如果我想 /topics 目录下的 html 都由 Apache 解析,jsp都要由 Tomcat 解析。开始想着 “ProxyPass /topics/*.html !” 就行,后来屡试不爽,…#&¥@#×(&%×,竟然不支持通配符。
在 Tomcat 的 server.xml 里,AJP代理的,就对应回 AJP Connector 的 port,Http代理的,就对应回 Http Connector 的 port,另外,如果想在程序里用 request.getServerName() 取到代理的 Name、用request.getServerPort() 取到代理的 Port,就在 Connector 里配置 proxyName 和 proxyPort 吧。
OK,可以测试一下了:
A同事在地址栏敲入:http://192.168.1.10:1020
B同事在地址栏敲入:http://192.168.1.10:1030
C同事在地址栏敲入:http://192.168.1.10:1040
各取其需。。。。。。。可以写 Rewrite Rule 去了..
分享到:
- 2008-11-20 21:54
- 浏览 2094
- 评论(9)
- 论坛回复 / 浏览 (9 / 6852)
- 查看更多
相关推荐
PHP开发环境(apache_2.2.4-win32-x86-no_ssl,mysql-5.5.20-win32,php-5.6.32-Win32-VC11-x86),下载之后解压就行,教程地址http://blog.csdn.net/zx1091515459/article/details/78449581
Apache Spark开发环境搭建
3、点击d:/php/setup 中对应操作系统的安装和卸载程序就可以完成php+mysql+apache集成开发环境的安装和卸载; 4、d:/www 为站点的根目录(可在配置文件中更改); 5、为方便同时开发asp的朋友,本系统的...
3、点击d:/php/setup 中对应操作系统的安装和卸载程序就可以完成php+mysql+apache集成开发环境的安装和卸载; 4、d:/www 为站点的根目录(可在配置文件中更改); 5、为方便同时开发asp的朋友,本系统的...
搭建apache+python+django+MySQL Web开发环境.docx
Linux+Apache2.4+PHP7.1+MySQL5.7
apache+python+django开发环境搭建
3、点击d:/php/setup 中对应操作系统的安装和卸载程序就可以完成php+mysql+apache集成开发环境的安装和卸载; 4、d:/www 为站点的根目录(可在配置文件中更改); 5、为方便同时开发asp的朋友,本系统的...
自己在项目开发中用到的apache模块开发工具apxs,重要的是这个工具在windows环境下的安装方法和使用方法,非常珍贵,泣血推荐
搭建apache python django MySQL_Web开发环境 搭建apache python django MySQL_Web开发环境
135-PHP、Apache环境中部署DVWA
详细的教你利用Apache+Tomcat配置JSP开发环境,各种环境变量的配置
使用PHP生成专属邀请码 一、开发环境 1、环境搭建:Windows 8+Apache 2.4.18+MySQL 5.7.11+PHP 7.1.0 。 2、文本编辑器:Sublime Text3。 二、主要技术 本实验主要使用JAVASCRIPT和一定的算法实现生成专属邀请码。
搭建php环境Apache+PHP+mysql
集成了php用到的开发环境,包括Apache-20 MySQL-5.0.83 php-5.2.10-Win32 ZendOptimizer
3、点击d:/php/setup 中对应操作系统的安装和卸载程序就可以完成php mysql apache集成开发环境的安装和卸载; 4、d:/www 为站点的根目录(可在配置文件中更改); 5、为方便同时开发asp的朋友,本系统的端口号设为81...
查询系统中已安装的Apache相关软件包 # rpm -qa|grep -i httpd httpd-manual-2.0.40-21 httpd-2.0.40-21 redhat-config-httpd-1.0.1-18 如果Apache已开启,停止运行Apache服务器 #service httpd stop 卸载Apache...
该尽可能掩盖复杂的地方,露出一个干净而直观的 API,来简化开发人员在使他们的应用程序安全上的努力。 以下是你可以用 Apache Shiro 所做的事情: 验证用户来核实他们的身份 对用户执行访问控制,如: ...
全面细致、深入浅出,主要内容包括Apache相关背景、APR的基础知识,以及利用Apache模块开发的全过程,适合广大在Apache环境下的模块开发者们阅读和参考。适合Apache模块开发者、大规模服务器开发人员及Web开发者阅读...
Groovy轻松入门—搭建Groovy开发环境 Groovy轻松入门—搭建Groovy开发环境