带ARR的IIS是否支持完全透明的反向代理?

我有一些Web服务器正在运行,我希望所有这些服务器都可以通过一个域访问.我在IIS中将ARR设置为另一台服务器中的反向代理,它工作正常.但是,当请求被重定向到服务器时,我需要保留源IP地址.否则,服务器会看到所有连接都来自localhost,这不是很好.

我知道有一个选项forwarded_for可以创建X-Forwarded-For标头,但它不是真的透明,因为我有WAF(Web应用程序防火墙)问题.

最佳答案
编辑:

您需要为每个从代理服务器向其发送流量的网站重写规则.该规则将检查HTTP_X_FORWARDED_FOR标头是否存在并且具有值,如果存在,则我们知道该请求已从代理服务器转发,因此我们将服务器变量REMOTE_ADDR设置为HTTP_X_FORWARDED_FOR的值,因为我们知道是用户的真实IP地址.

这是规则:

<rule name="RewriteRemoteAddr">
    <match url="(.*)" />
    <conditions>
        <add input="{HTTP_X_FORWARDED_FOR}" pattern="([_0-9a-zA-Z]+)" />
    </conditions>
    <serverVariables>
        <set name="{REMOTE_ADDR}" value="{HTTP_X_FORWARDED_FOR}" />
    </serverVariables>
    <action type="None" />
</rule>

转载注明原文:带ARR的IIS是否支持完全透明的反向代理? - 代码日志