我知道这个问题之前已经得到解答了但是没有一个解决方案对我有用。
我在我的 digitalocean droplet 上安装了更新,然后重新启动它,却发现我的网站出现 502 错误。
运行:sudo tail -100 /var/log/nginx/error.log
给我:
2021/04/21 13:28:15 [crit] 23183#23183: *6744 SSL_do_handshake() failed (SSL: error:1420918C:SSL routines:tls_early_post_process_client_hello:version too low) while SSL handshaking, client: 192.241.217.146, server: 0.0.0.0:443
2021/04/21 17:59:08 [crit] 23183#23183: *6928 SSL_do_handshake() failed (SSL: error:1420918C:SSL routines:tls_early_post_process_client_hello:version too low) while SSL handshaking, client: 172.105.13.165, server: 0.0.0.0:443
2021/04/21 22:52:02 [error] 833#833: *2 connect() failed (111: Connection refused) while connecting to upstream, client: 108.162.241.244, server: site.com, request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:5000/", host: "site.com
:是什么SSL: error:1420918C:SSL routines:tls_early_post_process_client_hello:version too low
意思?我该如何解决它?
注意:Nginx 正在运行,我已尝试重新启动它,并且运行nginx -t
表明一切成功。
答案1
这些错误意味着客户端无法协商应该使用哪种特定密码与您的服务器通信,因此 SSL 握手失败。这可能是某人使用了某种类型的老旧客户端,也可能是某些更邪恶的人,例如有人在寻找您网站上的潜在漏洞来加以利用。
不过,我不认为这些是导致您出现问题的原因。不过,您捕获的第三个错误讲述了一个不同的故事 - 您的 nginx 服务器似乎无法与上游通信,也许是 flask 之类的东西?
假设您有 Flask 应用程序或 php-fpm 等应该可以正常工作的东西,您可能需要检查它是否处于活动状态。您还可以使用检查主机,lsof -i :5000
看看是否有任何东西在监听。也可能是您没有设置允许访问端口 5000 的防火墙规则,并且当 droplet 重新启动时,它不再起作用。
如果这不能帮助您指明正确的方向,请分享您的 nginx 配置,以及有关您的应用程序功能的更多详细信息。
答案2
正如 @tilleyc 所说,我会运行sudo lsof -i :5000
以查看正在侦听该端口的任何服务。此外,也许您的某个服务未设置为启用并在服务器重启时启动。运行systemctl list-units --type service
以查找任何未加载的关键服务