需要设置iis反向代理的场景其实挺多的。例如websocket、Server Sent Events(SSE) 都需要反向代理。
对于需要临时放公网访问的应用,直接运行127.0.0.1的开发环境,然后通过反向代理访问127.0.0.1就可以了,省去麻烦的iis设置。
IIS 实现反向代理功能,必须同时安装 URL Rewrite 和 Application Request Routing (ARR) 两个模块,缺一不可。
- URL Rewrite 负责:定义反向代理规则。解析传入的请求 URL,根据预定义的规则将请求重写或重定向为新的目标 URL(通常是后端服务器的 URL)。
- ARR 负责:接收 URL Rewrite 转发的请求,并将这些请求代理到后端服务器处理。
默认IIS没有这两个模块,需要自己下载安装
ARR(Application Request Routing Cache):
https://www.iis.net/downloads/microsoft/application-request-routing
URL重写:
https://www.iis.net/downloads/microsoft/url-rewrite
具体规则配置可以通过界面配置也可以直接在web.config上配置,一般来说web.config配置更直观
应用场景一:通过反向代理访问 127.0.0.1:xxxx 。
step1:如上图安装了 URL rewrite 和 ARR,并启动了ARR的Enable proxy。
step2:在IIS上新建站点,绑定好域名,本地物理路径
step3:在本地物理路径跟目录下创建web.config 内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<proxy enabled="true" preserveHostHeader="true" />
<rewrite>
<rules>
<rule name="ReverseProxyInboundRule1" stopProcessing="true">
<match url="(.*)" />
<action type="Rewrite" url="http://127.0.0.1:8080/{R:1}" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
如果是绑定了域名,还需要在settings.py 中配置:
ALLOWED_HOSTS = ['mydomain.com', '公网IP', '127.0.0.1','localhost']
重启站点。
这个配置对websocket、Server Sent Events(SSE)都直接可用。