Apache 反向代理 IIS 那点折腾事

最近买了阿里云, 因为在上面更灵活做自己的东西,比如自己的SVN服务器等. 另外顺便将自己用python,django 开发的网站和自己的博客移植上去. 因为原来的博客是开源的 ASP 博客, 而我又懒得转, 所以就用了阿里云windows 系统, 其实作为服务器来说, linux 更好, 但 apache 下支持 asp 的模块确实不好, 其实作为个人工作来说, windows 来说可以了。既然要同时支持 asp, python, java 等环境, 所以采用了 apache 作为反向代理服务器代理 IIS,同时 用 mod_wsgi 来支持 python,django应用.

配置apache 反向代理 IIS
首先得在IIS 里面配置好你的网站(网上太多教程了,随便参考个就行),并且端口不能用 80, 因为 apache 用 80 作为默认端口. 配置也挺简单的.

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
...


       ServerAdmin summer@yihaomen.com
       ServerName www.yihaomen.com
       ProxyRequests Off
       SetEnv force-proxy-request-1.0 1
       SetEnv proxy-nokeepalive 1
  
       order deny,allow
       Allow from all
  
       ProxyPass / http://www.yihaomen.com:8081/
       ProxyPassReverse / http://www.yihaomen.com:8081/



上面的配置很清楚的将 www.yihaomen.com 这个域名的请求全部转发到 www.yihaomen.com:81 这个 IIS 上面去处理,得到结果后,再将结果返回客户端,性能可能稍低下,但中小网站,应该可以无视这种差距.

这样配置上去之后,运行了一段时间,发现 Apache 假死了, 查看 log 报错了: (OS 64)指定的网络名不再可用。: winnt_accept: Asynchronous AcceptEx failed.” , 于是在网上搜索,需要配置如下东西 :
AcceptFilter http none 
AcceptFilter https none 
EnableSendfile Off  
EnableMMAP off


配置好之后,重启apache , 连续运行几天之后,没有发现问题,说明稳定下来了。

按道理说,到此为此反向代理配置成功,应该万事大吉了,可是在测试博客的过程中,发现评论文章经常会跳转到一个带端口的网页地址,也就是 IIS 绑定的端口,本来用反向代理就是像隐藏这个端口,现在这个特定的情况却出来了。经过自己排查原因, 采用如下方法解决:
1. 原来博客的文章是 生成了静态页面的, 里面的地址全部用了相对路径,可以改成绝对路径,加上域名的绝对路径。
2. 在静态页面的模板的 中设置 , 然后在页面使用相对于 这个 base url的相对路径。

原来以为只有在 linux 下才是折腾,现在看来, windows 下一样需要折腾。 而且 apache 这样的东西本来就是在 linux 下运行的很好的,在 windows下需要特殊配置才好用.

后面配置 python, django, apache, mod_wsgi 可以参考前面的文章: apche mod_wsgi,django

另外所采用 apache 的版本在上面的连接中也有提到,可以参考。

上一篇: JSP 页面中 jsessioinid 出现在css和js路径中的怪现象
下一篇: mybatis spring 集成 bootstrap 例子一个
 评论 ( What Do You Think )
名称
邮箱
网址
评论
验证
   
 

 


  • 微信公众号

  • 我的微信

站点声明:

1、一号门博客CMS,由Python, MySQL, Nginx, Wsgi 强力驱动

2、部分文章来源于互联网, 若有侵权, 联系邮箱:summer@yihaomen.com, 同时欢迎大家注册用户,主动发布文章.

3、鄂ICP备14001754号-3, 鄂公网安备 42280202422812号