开发环境中的Apache

假设:

        项目需要做 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 去了..

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值