我有一些 Nginx 服务器,它们共享它们的配置,因为它们位于负载均衡器池中。
所以我对所有服务器都有一个唯一的配置,并且所有服务器都在监听 *:80 和 *:443 地址。
但这导致我在不支持 SNI(如 Windows XP)的客户端上的 SSL 证书出现一些问题。
为了解决这个问题,我应该为每个 SSL 网站指定一个不同的 IP 地址,但这当然与池中的每个服务器都不同。
你有什么建议吗?
如果 Nginx 无法绑定其中一个 IP,我是否可以在同一台服务器中指定多个 IP,而不会导致错误?
非常感谢!
答案1
在这种情况下,您可能更愿意进行集中式 SSL 终止。您的nginx
实例不必担心 SSL,只需让它们执行 http 并将 SSL 终止集中在一个haproxy
盒子或冗余负载平衡器(如 A10 或 Netscaler)上即可。然后,您的代理/LB 会将连接重定向到盒子nginx
。 本文解释如何使 SSL 在 haproxy 上运行。
答案2
如果 Nginx 无法绑定其中一个 IP,我是否可以在同一台服务器中指定多个 IP,而不会导致错误?
不确定您正在运行什么操作系统,因为您没有说明这一点,但如果是某种 Linux 版本:允许进程绑定/侦听“非本地”IP。要执行此操作:
echo 1 > /proc/sys/net/ipv4/ip_nonlocal_bind
如果您希望使其持久,即“跨重启”,则必须将其放在“某处”。对于基于 Debian 的发行版,例如/etc/sysctl.conf
:在里面,放入一行
net.ipv4.ip_nonlocal_bind = 1
并执行sysctl -p
或重新启动。