服务器域返回 502 Bad Gateway - Nginx

Server domain returning 502 Bad Gateway - Nginx

我无法通过域名访问我的服务器。 它显示 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:我是新手。

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

  • 在 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 上侦听and/or使用防火墙规则阻止来自互联网的访问。