Nginx负载均衡与上游SSL

15
尝试将Nginx设置为https服务器的负载均衡器。 上游服务器通过配置SSL证书在端口443上提供服务。如何配置Nginx,以便SSL证书配置仅在上游服务器上处理,而不在Nginx服务器上处理?

1
请问您能否发布解决问题的配置? - Panu Haaramo
3个回答

15

您需要使用Upstream模块Reverse Proxy模块。要反向代理到https上游服务器,请使用以下内容:

proxy_pass  https://backend;

后端是上游块。

然而,如果我在做这件事情,我会在nginx服务器上终止ssl,并让上游应用服务器专注于所擅长的内容服务,而不必担心ssl加/解密开销。使用SSL模块在nginx上设置ssl终止也非常简单。这里还提供了一个非常好的案例研究:here


1
有任何示例配置吗?我在浏览器中收到“ssl_error_rx_record_too_long”错误,但在NGINX错误日志中没有任何内容。 - Panu Haaramo
这个 Stack Overflow 的回答解决了你的问题吗?http://serverfault.com/questions/497430/error-code-ssl-error-rx-record-too-long - Chuan Ma
1
不,我已经尝试过了。那个示例中的配置文件定义了SSL证书,而我没有这样做(因为NGINX服务器上没有证书)。 - Panu Haaramo
1
在不尝试进行负载均衡,而纯粹代理到一个后端时,上游模块是否也是必需的?我是否可以简单地明确指出 proxy_pass https://example.com - Joost
1
OP正在询问“不在Nginx服务器上”,因此他想要的是SSL透传;您建议使用_upstream SSL反向代理_;这将需要在Nginx上设置SSL证书。 - Christian Ulbrich

5

4
根据我从Nginx论坛上阅读相关讨论的理解,这是不可能的,因为Nginx需要终止上游SSL连接。如果您坚持使用Nginx,只能复制SSL配置并使证书和密钥可用于Nginx。
我所链接的讨论得出结论,HAProxy是处理SSL上游转发的更好工具。这是有关配置HAProxy的相关帖子,因为我没有HAProxy经验,所以无法总结其配置或解决方案的一般可行性,留给读者自行判断。

更新

自1.9.2版本以来,Nginx支持HAProxy的代理协议

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接