我们的团队在 8443 而不是 443 上运行所有 Nginx 安装,原因很明显,您不需要 root 身份即可监听该端口,因此可以使用较低的权限启动和停止该进程。(然后我们通过 IP 表规则或负载平衡器在端口 443 上公开应用程序。)我们正在集成 Shibboleth 以进行 SSO 以进行身份验证。
我遇到过这个错误:
OpenSAML.MessageDecoder.SAML2POST [2]: POST targeted at (https://myserver.com/Shibboleth.sso/SAML2/POST), but delivered to (https://myserver.com:8443/Shibboleth.sso/SAML2/POST)
这似乎与 Nginx 在 8443 上监听但在 443 上公开暴露的事实有关。有没有办法告诉 Shibboleth 停止将 添加8443
到 URL 中?
我尝试阅读 Shibboleth wiki,但没有找到任何解释这种情况的内容。我在互联网上找到了一个例子有人在做类似的事情,但链中给出的唯一答案是更改一些 Apache 配置(我无法找到该 Apache 配置或 Nginx 中的等效配置)。
答案1
在 Apache 中,您可以通过在指令中指定端口来欺骗 Shibboleth 模块,让它认为它已经在不同的端口上加载ServerName
,例如,ServerName example.com:443
即使它正在监听:8443
。
最近,SP 软件添加了ShibURLScheme,它“控制 Apache 将报告给模块的 URL 方案,应该反映网络外部客户端看到的逻辑值。”
其中一个应该可以工作。你只需要欺骗 nginx 告诉 Shibboleth 模块请求来自不同的端口或主机头。