【问题标题】:Using Url Rewrite to change REMOTE_ADDR works for files but not folders使用 Url Rewrite 更改 REMOTE_ADDR 适用于文件但不适用于文件夹
【发布时间】:2013-11-18 02:37:47
【问题描述】:

我有许多网站使用 REMOTE_ADDR 服务器变量来记录客户端 IP 以获取指标。在将这些站点的托管移动到负载平衡环境中时,我们现在只能在 REMOTE_ADDR 中获得负载平衡器 IP。我完全了解 HTTP_X_FORWARDED_FOR 的使用及其工作原理,我们确实可以访问它,我首选的解决方案是简单地更新应用程序以使用它。

但是,这里的权力希望避免必须更新所有网站:(同时我正在寻找替代方案。

最终这意味着在请求到达应用程序之前找到某种方法将 REMOTE_ADDR 替换为 HTTP_X_FORWARDED_FOR。

我正在尝试使用来自另一个 acole76 问题的建议来使 URL Rewrite 2.0 模块工作:

IIS 7 Rewrite web.config serverVariables directive not working in sub folder

我的 web.config 和他的几乎一样:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="RemoteHostRewrite">
                    <match url="(.*)" ignoreCase="true" />
                    <serverVariables>
                        <set name="REMOTE_ADDR" value="4.3.2.1" />
                    </serverVariables>
                    <action type="Rewrite" url="{R:0}" appendQueryString="true" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

我在这里使用硬编码值 4.3.2.1 进行测试。我最终会用实际值 {HTTP_X_FORWARDED_FOR} 替换它。

现在,如果 url 包含文件名,这绝对可以正常工作。如果 url 不以文件名结尾,则它不起作用。

例如: mysite.local/default.aspx - 有效

mysite.local/ - 不起作用

mysite.local/folder/default.aspx - 有效

mysite.local/folder/ - 不起作用

我被难住了!任何人都可以提供任何帮助吗?

【问题讨论】:

标签: asp.net iis-7 url-rewrite-module


【解决方案1】:

你必须设置另一个规则:

    <match url="^$" />
    <action type="Rewrite" url="/default.aspx" />

或者你的默认页面是什么 否则 "url" 将为空 --> 不使用任何规则

【讨论】:

    猜你喜欢
    • 2020-07-04
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-05
    相关资源
    最近更新 更多