Apache 反向代理 IIS 那点折腾事
By:Roy.LiuLast updated:2014-02-28
最近买了阿里云, 因为在上面更灵活做自己的东西,比如自己的SVN服务器等. 另外顺便将自己用python,django 开发的网站和自己的博客移植上去. 因为原来的博客是开源的 ASP 博客, 而我又懒得转, 所以就用了阿里云windows 系统, 其实作为服务器来说, linux 更好, 但 apache 下支持 asp 的模块确实不好, 其实作为个人工作来说, windows 来说可以了。既然要同时支持 asp, python, java 等环境, 所以采用了 apache 作为反向代理服务器代理 IIS,同时 用 mod_wsgi 来支持 python,django应用.
配置apache 反向代理 IIS
首先得在IIS 里面配置好你的网站(网上太多教程了,随便参考个就行),并且端口不能用 80, 因为 apache 用 80 作为默认端口. 配置也挺简单的.
上面的配置很清楚的将 www.yihaomen.com 这个域名的请求全部转发到 www.yihaomen.com:81 这个 IIS 上面去处理,得到结果后,再将结果返回客户端,性能可能稍低下,但中小网站,应该可以无视这种差距.
这样配置上去之后,运行了一段时间,发现 Apache 假死了, 查看 log 报错了: (OS 64)指定的网络名不再可用。: winnt_accept: Asynchronous AcceptEx failed.” , 于是在网上搜索,需要配置如下东西 :
配置好之后,重启apache , 连续运行几天之后,没有发现问题,说明稳定下来了。
按道理说,到此为此反向代理配置成功,应该万事大吉了,可是在测试博客的过程中,发现评论文章经常会跳转到一个带端口的网页地址,也就是 IIS 绑定的端口,本来用反向代理就是像隐藏这个端口,现在这个特定的情况却出来了。经过自己排查原因, 采用如下方法解决:
1. 原来博客的文章是 生成了静态页面的, 里面的地址全部用了相对路径,可以改成绝对路径,加上域名的绝对路径。
2. 在静态页面的模板的 中设置 , 然后在页面使用相对于 这个 base url的相对路径。
原来以为只有在 linux 下才是折腾,现在看来, windows 下一样需要折腾。 而且 apache 这样的东西本来就是在 linux 下运行的很好的,在 windows下需要特殊配置才好用.
后面配置 python, django, apache, mod_wsgi 可以参考前面的文章: apche mod_wsgi,django
另外所采用 apache 的版本在上面的连接中也有提到,可以参考。
配置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. 在静态页面的模板的 中设置
原来以为只有在 linux 下才是折腾,现在看来, windows 下一样需要折腾。 而且 apache 这样的东西本来就是在 linux 下运行的很好的,在 windows下需要特殊配置才好用.
后面配置 python, django, apache, mod_wsgi 可以参考前面的文章: apche mod_wsgi,django
另外所采用 apache 的版本在上面的连接中也有提到,可以参考。
From:一号门
Previous:JSP 页面中 jsessioinid 出现在css和js路径中的怪现象
COMMENTS