V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
kujou
V2EX  ›  问与答

关于 IIS 上 URL 重写+ARR 作为反代无法修改请求头的问题

  •  
  •   kujou · 323 天前 · 468 次点击
    这是一个创建于 323 天前的主题,其中的信息可能已经有所发展或是发生改变。
    IIS 安装了 URL rewrite 和 ARR 。然后重写配置文件如下:

    <configuration>
    <system.webServer>
    <rewrite>
    <rules>
    <rule name="ReverseProxyInboundRule1" stopProcessing="true">
    <match url="(.*)" />
    <action type="Rewrite" url="http://backserver/{R:1}" />
    <serverVariables>
    <set name="HTTP_UPGRADE" value="{$HTTP_UPGRADE}" />
    <set name="HTTP_CONNECTION" value="upgrade" />
    <set name="HTTP_HOST" value="{$HTTP_HOST}" />
    </serverVariables>
    </rule>
    </rules>
    </rewrite>
    </system.webServer>
    </configuration>

    其实就相当于 nginx 里的

    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header Host $http_host;

    然而并不行。
    按照 IIS 的官方文档,我这么写似乎没有问题...
    但是后端直接打印输出,发现三个参数一个也没修改...
    所以...问题出在哪?
    4 条回复    2023-06-15 11:19:27 +08:00
    xbchaonba
        1
    xbchaonba  
       322 天前
    我们公司也用 iis ,感觉好异类啊;
    kujou
        2
    kujou  
    OP
       322 天前
    @xbchaonba ...你能想象我是自己主動選擇 IIS 的嗎....笑死...用了 IIS 然後用 php...最後想各種方法把 IIS 折騰的和 nginx 或者 apache 一樣...
    Rache1
        3
    Rache1  
       322 天前
    刚刚在我本地试了一下,没有问题,不过 value 里面是不需要 $ 的

    <serverVariables>
    <set name="HTTP_HOST" value="example.com" />
    </serverVariables>


    或者

    <serverVariables>
    <set name="HTTP_HOST" value="{HTTP_HOST}" />
    </serverVariables>

    另外,你还需要到这里添加一下 HTTP_HOST ,不然默认情况下是不能复写的,在规则命中后会报 500 错误。



    kujou
        4
    kujou  
    OP
       322 天前
    @Rache1 剛剛我也試了一下...復現問題如下:
    允許的變量:HTTP_Upgrade, HTTP_CONNECTION, HTTP_HOST, HTTP_COOKIE.
    COOKIE 修改為 test123123 有效
    剩下三個都無效...
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1389 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 16:49 · PVG 00:49 · LAX 09:49 · JFK 12:49
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.