使用IIS做反向代理时,后端服务器不能直接获取到用户请求的原始主机名(域名),这需要一些配置。这里介绍两种方法:
1、更改反向代理的配置
1 |
%windir%\system32\inetsrv\appcmd.exe set config -section:system.webServer/proxy -preserveHostHeader:true /commit:apphost |
在命令提示符中执行上边的语句,意思是反向代理时保留主机头。
然后就可以通过服务器变量HTTP_HOST获取,C#中可使用 Request.Url.Host获取。
2、添加服务器变量
这个稍微复杂点。
首先需要在IIS站点上注册一个服务器变量:HTTP_X_ORIGINAL_HOST(名字可以随便取,HTTP开头的会进入到HTTP Header中)。
然后在提供反向代理功能的站点下添加“URL重写”入站规则,这里直接给出web.config中的配置:
1 2 3 4 5 6 7 8 9 10 11 12 |
<rewrite> <rules> <rule name="ORIGINAL_HOST"> <match url=".*" /> <serverVariables> <set name="HTTP_X_ORIGINAL_HOST" value="{HTTP_HOST}" /> </serverVariables> <action type="None" /> </rule> ... </rules> </rewrite> |
这里就是匹配所有的url,添加一个服务器变量。
注意这段配置要放在rules的最前面,防止其它配置把它忽略。
现在就可以通过服务器变量HTTP_X_ORIGINAL_HOST获取了,也可以从HTTP Header中获取X_ORIGINAL_HOST。
发表评论
相关文章
热门标签
.net core activex asp.net Cassandra code first excel Flex GridView iis JAVA jquery jsp mvc mysql PowerDesigner rabbitmq Silverlight VPN webservice WordPress XML 图片滚动 垂直滚动 多线程 导出excel 微信分享 排序算法 插件 界面原型设计 自定义控件文章分类
最新评论