免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2444 | 回复: 0
打印 上一主题 下一主题

[Web] apache监听多端口问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-12-28 19:30 |只看该作者 |倒序浏览
我设置apache服务器监听80和81口(DocumentRoot相同),然后在apache的前面放了一个具有DNAT的防火墙,来自子网A的IP地址IP-A直接访问80口的服务,来自子网B的IP地址IP-B进行DNAT访问服务器的81口,我想让访问81口的所有请求都rewrite到aaa.php页面,然后我在httpd.conf中添加了如下内容:
  1. RewriteCond %{SERVER_PORT} ^81$
  2. RewriteRule ^.*$ /aaa.php [NS,L]
复制代码
但是经过测试发现,apache仍然认为%{SERVER_PORT}是80口,通过netstat查看client确实连接的是server的81口,我想apache可能是通过HTTP报头中HOST字段有没有“:81”来判断的,如果没有“:”则默认为是80口,只做DNAT的话HTTP的HOST字段是没有改变的所以上面的规则失效。
我又想了下面的方法:
  1. <VirtualHost *:80>
  2.         DocumentRoot "/www"
  3. </VirtualHost>
  4. <VirtualHost *:81>
  5.         DocumentRoot "/www/mytest"
  6. </VirtualHost>
复制代码
这个时候进行DNAT访问的话确实可以访问到mytest下的index.php文件了,但是有一个问题是我想:
1. 访问我80口的服务器,如果所访问文件不存在则直接出错;
2. 访问我81口的服务器,如果所访问文件不存在,比如访问http://1.1.1.1/aaaa/bbb/ccc,我想将其rewrite到/www/mytest/index.php上去;
我试过将RewriteRule放到<VirtualHost>中不起作用,请问有没有方法实现我的需求呢?谢谢了!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP