我尝试在 IIS 中配置反向代理。这需要设置一些 HTTP 标头。我能够添加以下 HTTP 标头:
- X-转发-Proto
- X-转发端口
- X-转发主机
这可以通过添加和设置具有相关名称的服务器变量来实现。webconfig 如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="ReverseProxyInboundRule1" stopProcessing="true">
<match url="^foobar(.*)" />
<action type="Rewrite" url="http://localhost:9999/{R:1}" />
<serverVariables>
<set name="HTTP_X_FORWARDED_PORT" value="80" />
<set name="HTTP_X_FORWARDED_HOST" value="localhost" />
<set name="HTTP_X_FORWARDED_PROTO" value="http" />
<set name="HTTP_X_FORWARDED_PREFIX" value="/foobar" />
<set name="HTTP_X_FORWARDED_CONTEXT" value="/foobar" />
</serverVariables>
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
但我对 HTTP 标头 X-Forwarded-Context 或 X-Forwarded-Prefix 不太满意。此外,添加服务器变量也不起作用。