pea*_*ker 3 ssl nginx load-balancing
我试图让 nginx 在我的 Web 服务器之间进行负载平衡,同时在负载平衡器级别终止 SSL。我正在使用的 nginx.conf 文件基于做这件事的所有指南,但我无法让它工作。使用标准 HTTP 时,负载均衡器工作正常。但是,当尝试通过 HTTPS 访问负载均衡器时,浏览器会挂起,最终给出 ERR_CONNECTION_REFUSED。
我在尝试 HTTPS 时没有看到日志中的任何错误,甚至在访问日志中也没有看到任何错误,所以我不知道可能是什么问题。我尝试了很多不同的配置选项,包括尝试不同的 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;
}
}
Run Code Online (Sandbox Code Playgroud)
有没有人有任何想法?没有错误输出,我不确定如何找出问题所在。
编辑:
尝试连接到 HTTPS 时,日志中仍然没有任何内容。访问 HTTP 服务器时设置并运行日志(我在访问日志中获取条目)。这是日志的 nginx.conf 文件的相关部分:
access_log /var/log/nginx/nginx.vhost.access.log;
error_log /var/log/nginx/nginx.vhost.error.log;
Run Code Online (Sandbox Code Playgroud)
我刚刚测试了错误日志是否正常工作,确实如此。我是通过从配置文件中的服务器块中删除“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 相关的错误。
在评论中,您已验证 nginx 进程正在运行并且telnet localhost 443
正在工作。但这并不意味着外方可以访问您的nginx。您应该检查的一层是firewall。如果您不允许规则端口 443,它将检查并丢弃流向 nginx 的数据包。
旁注:Nginx 错误400 Bad request
,通常意味着您在 https 端口 telnet 到 nginx 但您的请求不是明文或不完整的(例如没有定义 HTTP 标头)
归档时间: |
|
查看次数: |
3627 次 |
最近记录: |