![在不同的 IP 地址上在 IIS 和 nginx 中使用相同的端口](https://linux22.com/image/774940/%E5%9C%A8%E4%B8%8D%E5%90%8C%E7%9A%84%20IP%20%E5%9C%B0%E5%9D%80%E4%B8%8A%E5%9C%A8%20IIS%20%E5%92%8C%20nginx%20%E4%B8%AD%E4%BD%BF%E7%94%A8%E7%9B%B8%E5%90%8C%E7%9A%84%E7%AB%AF%E5%8F%A3.png)
该服务器运行带有 IIS 10 的 Windows Server 2019 Standard,并且具有两个具有公共 IP(198.51.100.1 和 203.0.113.1)的网络接口
我想要的设置:
- IIS:198.51.100.1,端口 80
- IIS:198.51.100.1,端口 443
- IIS:端口 80 上的 203.0.113.1
- nginx:203.0.113.1,端口 443
但是在 IIS 启动后,http.sys(PID=4)开始在所有 IP 上监听 80 和 443 端口:
TCP 0.0.0.0:80 0.0.0.0:0 正在侦听 4 TCP 0.0.0.0:443 0.0.0.0:0 正在侦听 4 TCP [::]:80 [::]:0 正在侦听 4 TCP [::]:443 [::]:0 正在侦听 4
我可以使用“netsh http add iplisten”命令限制到特定地址,但我想在 IIS 中使用 198.51.100.1 和 203.0.113.1 地址。Iplisten 不允许指定端口。
而且我不想使用反向代理......
有人知道如何在 IIS 和 nginx 中使用 443 吗?
答案1
您需要使用 NETSH 配置系统以仅让 http.sys 捕获特定地址(默认情况下它会捕获通配符,如您在包含的 NETSTAT 中所见)
尝试从提升的命令提示符运行这些命令(停止 IIS 服务后)
netsh http delete iplisten 0.0.0.0
netsh http add iplisten 198.51.100.1:80
netsh http add iplisten 198.51.100.1:443
netsh http add iplisten 203.0.113.1:80
这应该重新配置 http.sys 以仅监听指定的 IP:端口组合,而不是主动捕获系统上的每个:80 和:443。
重要的提示-- 请记住,您现在已经限制了 IIS 能够响应的 IP 端口组合(无论您如何在 IIS Admin 中配置站点绑定)。如果您将来需要添加更多 IP 和/或端口,则必须执行其他netsh http add iplisten
命令。