我正在尝试在反向代理重写发生后从我的应用程序(MVC 5)中获取原始URL。
我已经尝试了所有我能找到的东西,例如。
有什么想法吗?
尝试使用ARR 3.0和Url Rewrite 2.0的IIS7和IIS7.5
答案 0 :(得分:2)
这个答案的灵感来自IIS文档中的Setting HTTP request headers and IIS server variables。他们做了类似的事情,但奇怪的是它避免了检测是否使用HTTP或HTTPS访问了原始URL。
首先,您需要具有IIS服务器的管理访问权限,才能在URL Rewrite模块中设置新的允许服务器变量。链接文章对此进行了描述,但以下是基本步骤:
HTTP
。例如,HTTP_X_MY_HEADER
可以作为X-MY-HEADER
标题访问。然后,在重写规则中,将服务器变量值设置为{CACHE_URL}
。您可以通过UI或直接在web.config中执行此操作,如下所示。
注意:请务必根据需要设置匹配,条件和操作。
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="original URL sample" stopProcessing="true">
...
<serverVariables>
<set name="HTTP_X_MY_HEADER" value="{CACHE_URL}" />
</serverVariables>
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
结果标头将明确包含端口号,例如http://foo.example:80/bar
,因此您可能需要根据自己的需要进行处理。