IIS实现反向代理
反向代理(Reverse Proxy)方式是指以代理服务器来接受ter上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给ter上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。
反向代理可以启用高级URL策略和管理技术,从而使处于不同web服务器系统的web页面存在于同一个URL空间下。
通过IIS安装反向代理,可以使得IIS和Apache等服务器运行在同一台机器上,IIS和Apache都可以通过80端口访问,使得网站的兼容性更强。
IIS实现反向代理有两种方法,IIS6通过第三方工具ISAPI Rewrite来实现反向代理,IIS7以后的版本可以用过微软自己的URL Rewrite和Application Request Routg来实现反向代理。
反向代理
IIS6
先安装ISAPI_Rewrite3_0082.msi,安装完成后,再安装一个Apache服务器,Apache安装完成后,设置HTTP端口为8080,HTTPS端口4433,而IIS的HTTP端口为80,HTTPS端口443,IIS和Apache的端口不能冲突。
IIS新建一个站点,在网站根目录建立一个名为 .htaess 的文件,内容如下,域名请修改为自己的域名
RewriteEnge On
RewriteCompatibility2 On
RepeatLimit 200
RewriteBase
RewriteCond %{HTTP:Host} ^.williamlong.fo$
RewriteProxy (.) https://.williamlong.fo:8080$1 [NC,P,H]
之后,IIS6+W2003 配置反向代理到 Apache 就成功了,制定域名可以通过80端口的IIS访问,而实际网站则是再Apache的8080端口,对于用户来说是不可见的。
IIS7
IIS7不用安装第三方的软件,本身反向代理软件微软就提供,我们使用微软自己的URL Rewrite和Application Request Routg即可实现反向代理。
先安装URL Rewrite和Application Request Routg,只转发到IIS内网站,则不需要安装ARR。安装完成后,再安装一个Apache服务器,Apache安装完成后,设置HTTP端口为8080,HTTPS端口4433,而IIS的HTTP端口为80,HTTPS端口443,IIS和Apache的端口不能冲突。
安装好以上两个插件,重启IIS管理器,然后点击当前主机,就会发现两个新增的图标了。
点击Application Request Routg图标,选择Server Proxy Settgs,勾上Enable proxy并点击右侧的应用。
选择需要反向代理的站点,再选择“URL重写”,然后配置入站规则和出站规则。
入站规则里,点击添加规则,选择空白规则,“名称”随便写,选择“与模式匹配”,然后就在匹配URL里填个模式,^(.),“条件输入”填写“{HTTP_HOST}”,模式为^.williamlong.fo$,入站规则的操作类型为“重写”,重写URL为“https://.williamlong.fo:8080{R:1}”。
出站规则里,点击添加规则,选择空白规则,“名称”随便写,匹配模式选择“响应”,然后就在模式里填写,href=(.?).williamlong.fo:8080(.?),出站规则的操作类型为“重写”,重写数值为“href={R:1}.williamlong.fo/{R:2}”。
填好了保存下,即可完成IIS7的反向代理配置。
不过,上述方法在针对压缩网页的反向代理会报错,IIS会提示
HTTP 错误 500.52 - URL Rewrite Module Error.
Outbound rewrite rules cannot be applied when the content of the HTTP response is encoded ("gzip").
解决方法可以参考微软官方的一篇文章,里面详细描述了解决方法,我这里概括一下操作如下
点击“查看服务器变量”,点“添加”,增加两个变量,分别是 HTTP_ACCEPT_ENCODING 和 HTTP_X_ORIGINAL_ACCEPT_ENCODING 。
之后编辑 web.config 文件,内容如下
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="ReverseProxyInboundRule1" enabled="true">
<match url="^(.)"/>
<action type="Rewrite" url="https://.williamlong.fo:8080{R:1}"/>
<serverVariables>
<set name="HTTP_X_ORIGINAL_ACCEPT_ENCODING" value="{HTTP_ACCEPT_ENCODING}"/>
<set name="HTTP_ACCEPT_ENCODING" value=""/>
</serverVariables>
</rule>
</rules>
<outboundRules>
<rule name="ReverseProxyOutboundRule1" preCondition="ResponseIsHtml1" enabled="true">
<match filterByTags="None" pattern="href=(.?).williamlong.fo:8080(.?)"/>
<action type="Rewrite" value="href={R:1}.williamlong.fo/{R:2}"/>
</rule>
<rule name="Restore-AeptEncodg" preCondition="NeedsRestorgAeptEncodg">
<match serverVariable="HTTP_ACCEPT_ENCODING" pattern="^(.)"/>
<action type="Rewrite" value="{HTTP_X_ORIGINAL_ACCEPT_ENCODING}"/>
</rule>
<preConditions>
<preCondition name="ResponseIsHtml1">
<add put="{RESPONSE_CONTENT_TYPE}" pattern="^text/html"/>
</preCondition>
<preCondition name="NeedsRestorgAeptEncodg">
<add put="{HTTP_X_ORIGINAL_ACCEPT_ENCODING}" pattern=".+"/>
</preCondition>
</preConditions>
</outboundRules>
</rewrite>
</system.webServer>
</configuration>
使用的时候将黑体内容替换,将.williamlong.fo:8080替换为反向代理的网站,将.williamlong.fo替换为公开发布的网站即可。
推火专家月光博客
网站设计
- 静宁会SEO的网站建设公司:全面提升您的网络影
- 提升在线业务的关键:选择最佳的丽水网站建设
- 浙江网站优化发展潜力如何
- 井研专业的网站建设公司:打造您的在线品牌
- 灵山SEO网站建设公司:提升您的在线业务表现
- 蒙城网站建设优化公司:提升您网站表现的理想
- 阳谷企业网站优化:提升线上业务力的关键
- 樟树专业的网站建设公司:打造您在线业务的坚
- 通河百度SEO排名的策略与技巧
- 重庆百度快照排名如何进行精准的客户引流
- 重庆百度快照排名
- 常宁便宜的建站公司:助您轻松打造在线业务
- 巫溪百度网站优化:提升网站曝光率与流量的关
- 湖北整站优化怎么做才能放大客户需求
- 闸北网站建设多少钱?全面解析与预算规划
- 辽宁企业网站优化怎么做电话营销