我试图让nginx在我的Web服务器上进行负载均衡,同时在负载平衡器级别终止SSL。 我正在使用的nginx.conf文件是基于所有的指导做这个确切的事情,但我不能得到它的工作。 当去标准的HTTP,负载平衡器工作正常。 但是,当试图通过HTTPS访问负载均衡器时,浏览器只是挂起,最终给出ERR_CONNECTION_REFUSED。
我在日志中看到没有错误,甚至在尝试HTTPS时在访问日志中看到任何错误,所以我不知道问题可能是什么。 我已经尝试了很多不同的configuration选项,包括尝试不同的SSL证书,PEM编码,捆绑证书等,都没有效果。
这是nginx.conf的主要部分:
upstream backend { #web01 server 10.01.01.102; #web02 server 10.02.02.77; } #setup proxy proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # standard http server server { listen 80; listen 4444; server_name *.example.com; location / { proxy_pass http://backend; } } #server for https requests server { listen 443 ssl; server_name *.example.com; #ssl on; ssl_certificate /path/to/example.com.crt; ssl_certificate_key /path/to/example.com.key; location / { proxy_pass http://backend; } }
有没有人有任何想法? 没有错误输出,我不知道如何找出问题所在。
编辑:
尝试连接到HTTPS时,日志中仍然没有任何内容。 访问HTTP服务器时,日志是安装和运行的(我在访问日志中获得条目)。 以下是日志的nginx.conf文件的相关部分:
access_log /var/log/nginx/nginx.vhost.access.log; error_log /var/log/nginx/nginx.vhost.error.log;
我刚刚testing了错误日志正常工作,它是。 我这样做是通过从configuration文件中的服务器块删除“ssl_certificate”条目,然后尝试再次连接。 错误日志( /var/log/nginx/nginx.vhost.error.log;
)显示:
2014/09/23 13:41:28 [error] 10047#0: *9 no "ssl_certificate" is defined in server listening on SSL port while SSL handshaking, client: 127.0.0.1, server: 0.0.0.0:443
。
我已经把ssl_certificate条目,但我想确认错误日志正在工作。 我还仔细查看了/ var / log中的所有日志,没有看到与nginx相关的任何错误。
在注释中,您已经validation了nginx进程正在运行,并且telnet localhost 443
正在运行。 但这并不意味着外面的派对可以到达你的nginx。 你应该检查一层是防火墙 。 如果您不允许规则到端口443,它将检查并丢弃stream向nginx的数据包。
旁注 :Nginx错误400 Bad request
,通常意味着你在https端口telnet到nginx,但你的请求不是明确的文本或不完整(例如没有定义的HTTP头)