在不同的 IP 地址上在 IIS 和 nginx 中使用相同的端口

在不同的 IP 地址上在 IIS 和 nginx 中使用相同的端口

该服务器运行带有 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命令。

相关内容