我有一个有趣的问题。
基本上,我在同一个 IP 地址上托管了 2 台 Web 服务器(生产和开发)。每台都在 Windows Server 2019 上运行 IIS10,并且每台都安装了自己独特的 SSL 证书。
生产服务器在其绑定中使用端口 443,并且可以接收传入的 webhook 请求。
测试服务器无法使用 443。因此我在绑定中将其指定为端口 444。由于端口是 444,因此我必须在 URL 中包含端口号。webhook 请求未到达。
有人遇到过这种情况吗?有什么解决方法吗?
谢谢
答案1
“生产”和“开发”可以视为两个不同的网站,但恰好运行了相同的应用程序。这意味着,您的问题归结为在同一个 IP 地址(和端口)上运行多个使用 SSL 的不同网站。
这个问题是反向 HTTP 代理。
为您的网站赋予不同的名称(第三方将使用这些名称来引用它们)。例如,一个可以称为 ,example.com
另一个可以称为development.example.com
。这足以使代理能够区分并将请求路由到适当的服务器。
为了使用 SSL 运行两个站点,你需要你的反向代理支持信噪比并将所有带有私钥的证书安装到该代理上。此外,您还需要在代理上配置请求路由,例如example.com
将其路由到生产服务器,然后再development.example.com
路由到另一台服务器。然后,您必须将端口 TCP 443 转发到您的代理。
您的软件选择至少包括球童,Nginx,阿帕奇;还有更多。如果 IIS 本身可以进行反向代理,我不会感到惊讶;在这种情况下,您可以将端口 443 直接转发到运行生产站点的生产服务器,并将其配置为将开发站点代理到另一台服务器。(IIS 自 8.0 版起支持 SNI。)