六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 66|回复: 0

开发环境中的Apache

[复制链接]

升级  54%

5

主题

5

主题

5

主题

童生

Rank: 1

积分
27
 楼主| 发表于 2013-1-27 04:43:05 | 显示全部楼层 |阅读模式
假设:
        项目需要做 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.soLoadModule rewrite_module modules/mod_rewrite.soLoadModule proxy_ajp_module modules/mod_proxy_ajp.soLoadModule 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 去了..
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表