服务器域返回 502 Bad Gateway - Nginx

Posted

技术标签:

【中文标题】服务器域返回 502 Bad Gateway - Nginx【英文标题】:Server domain returning 502 Bad Gateway - Nginx 【发布时间】:2021-09-11 23:46:11 【问题描述】:

我无法通过域名访问我的服务器。 它显示 502 Bad Gateway。

显示 SSL_do_handshake() 失败的错误日志。

但是当我通过ip地址访问时它运行成功。

/etc/nginx/sites-available/default文件

/var/log/nginx/error.log 显示此错误 -

[error] 13728#13728: *1 SSL_do_handshake() failed (SSL: error:1408F10B:SSL routines:ssl3_get_record:wrong version number) while SSL handshaking to upstream, client: 179.43.169.181, server: www.myvaccinenotifier.me, request: "GET / HTTP/1.1", upstream: "https://128.199.21.142:3000/", host: "myvaccinenotifier.me"

可能是由于nginx配置中的一些错误...帮我纠正一下。

PS:我是新手。

【问题讨论】:

尝试将端口从 3000 更改为 443 请不要将文本内容(配置)包含为外部图像。而是直接将其作为文本包含在您的问题中。 【参考方案1】:

对您的设置知之甚少,但可以进行以下观察:

在 HTTP 上有一个 proxy_pass http://127.0.0.1:3000,这表明端口 3000 上有一些内部服务器,并且 nginx 应该作为反向代理工作 在 HTTPS 上,有一个 proxy_pass https://128.199.21.142:3000/,即与 HTTP 相同的端口,但 IP 地址不同,尤其是访问上游的协议也不同,即 https:// 而不是 http://。 IP 地址是服务器本身的外部 IP 地址。因此,在我看来,就像您将端口 3000 上的内部应用程序也直接暴露给互联网一样。 然后,您只能使用https:// 而不是http:// 访问此应用程序。该应用不太可能在同一端口上同时支持 HTTP 和 HTTPS,因此很可能应该是 http:// 而不是 https:// 来访问内部应用程序。这实际上是一个常见问题,“错误的版本号” 是在这种损坏的设置中看到的常见错误消息。

建议:

proxy_pass https://128.199.21.142:3000/ 更改为 proxy_pass http://127.0.0.1:3000,即端口 80 http 和端口 443 https 的上游完全相同。 不要将内部应用程序暴露在互联网上,即使其仅在 127.0.0.1 上侦听和/或使用防火墙规则阻止来自互联网的访问。

【讨论】:

非常感谢...这正是我试图解决的问题...现在完美运行...您提供了非常有用的见解...我会记住您提供的建议。 . 再次感谢

以上是关于服务器域返回 502 Bad Gateway - Nginx的主要内容,如果未能解决你的问题,请参考以下文章

Ueditor在上传图片时,服务器返回502 bad gateway的填坑记

502 Bad Gateway 常见解决思路

Apache 使用 mod_proxy 和大文件返回 502 Bad Gateway

Nginx 502 Bad Gateway如何解决

Azure 函数应用返回 502 Bad Gateway

113资讯网——NGINX 502 Bad Gateway——解决方案