Nginx反向代理出现502 Bad Gateway问题解决

🎉 前言

前一阵子写了一篇“关于解决调用百度翻译API问题”的博客,近日在调用其他API时又遇到一些棘手的问题,于是写下这篇博客作为记录。

🎉 问题描述

在代理的遇到过很多错误码,其中出现频率最高的就是502,说实话,当时我是在网上找了好久,也一直在问chatgpt,但是收效甚微,依然没什么头绪和进展。网上关于502错误码的原因大致分为两种:网络问题和上游服务器的问题。

网络问题我很快就排查完了,在终端中ping了几个api的域名,都能ping通,也没有包丢失,以我的认知来说,网络连接是没有问题的。

上游服务器问题,嗯,这个该怎么解决呢?我突然想到可以查看nginx错误日志(想到这里其实是非常惭愧的,竟然这么久才想到从这一点下手,太不专业了),于是发现这样一段报错:

(SSL: error:0A000438:SSL routines::tlsv1 alert internal error:SSL alert number 80) while SSL handshaking to upstream, client: 127.0.0.1, server: uapis.cn

于是我将这段日志前面加上一个nginx,即:

nginx (SSL: error:0A000438:SSL routines::tlsv1 alert internal error:SSL alert number 80) while SSL handshaking to upstream, client: 127.0.0.1, server: uapis.cn

然后直接放在Google里面搜索,第一条就是stack overflow的回复帖子,点进去看了一下,还真被我发现了一些有用的东西,尽管问题场景可能跟我不一样,但报错几乎一模一样,里面的答主都给出了一个非常一致的回答,在代理中添加这么一句:

proxy_ssl_server_name on;

后来又去中文社区搜了一下,找了一段解释,摘抄如下:

由于网站启用了 SNI , Nginx反代默认没有加入 SNI proxy_ssl_server_name on; ,Nginx 无法成功 handshake 上游的 SSL , 导致 502 Bad Gateway.

🎉 新的问题

我将这条配置语句加入到我的配置文件中,重启nginx,点击代理地址,结果熟悉的502不见了,取而代之的是一个陌生的404页面,为什么说陌生呢,有图为证:

Nginx反向代理出现502 Bad Gateway问题解决

我觉得这很有可能说明配置起作用了,只不过又有新的问题亟待解决,我仔细审查了我的配置文件之后,感觉有一处可以改动,这在我之前那篇博客里面也提到过,但这次不是重定向问题,于是我抱着试一试的心态修改了此处配置,修改如下:
从:

proxy_set_header Host $host;

更改为

proxy_set_header Host findmyip.net

也就是将$host替换成了具体的域名。

结果尝试了一下,竟然真的成功了!此时此刻我的心情只能用欣喜若狂来形容。

🎉 补充

在这之前,我还尝试过其他解决方法,虽然没有起到什么作用,但是也在这里记录下来,作为补充,读者看到了或许也能有所启发:

resolver 8.8.8.8; # Google DNS 服务器,作为域名解析

ssl_protocols TLSv1.2 TLSv1.3; # 指定TLS协议

proxy_ssl_verify off; # 禁用 SSL 证书验证(如果需要)

if ($request_method = OPTIONS) {
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Methods “GET, POST, OPTIONS”;
add_header Access-Control-Allow-Headers “Authorization,Content-Type”;
return 204;
} #处理option请求

proxy_buffer_size 16k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_connect_timeout 300s;
proxy_read_timeout 300s;
proxy_send_timeout 300s;

server_name和端口号

’ / ’ 问题,比如location /getpiclocation /getpic/ 、以及 proxy_pass https://example.com 和 proxy_pass https://example.com/是不一样的,以我目前的经验来看,一般可以不用加 ’ / ’

差不多就这些。

到此这篇关于Nginx反向代理出现502 Bad Gateway问题解决的文章就介绍到这了,更多相关Nginx反向代理出现502内容请搜索恩蓝小号以前的文章或继续浏览下面的相关文章希望大家以后多多支持恩蓝小号!

到此这篇关于Nginx反向代理出现502 Bad Gateway问题解决的文章就介绍到这了,更多相关Nginx反向代理出现502内容请搜索恩蓝小号以前的文章或继续浏览下面的相关文章希望大家以后多多支持恩蓝小号!

原创文章,作者:BWNAT,如若转载,请注明出处:http://www.wangzhanshi.com/n/1827.html

(0)
BWNAT的头像BWNAT
上一篇 2024年12月17日 18:00:37
下一篇 2024年12月17日 18:00:40

相关推荐

  • Nginx请求转发配置指南

    1. 简介 Nginx 是一款高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。本文档将介绍如何使用 Nginx 配置请求转发,并解释一些常…

    nginx 2024年12月17日
  • Nginx 限流和流量控制的实现

    Nginx 提供了强大的流量控制功能。限制客户端在特定时间段内的请求次数,以保护服务器资源,防止因过载而导致的性能下降甚至服务不可用。限流在防止DDoS攻击、爬虫过度抓取和滥用AP…

    nginx 2024年12月17日
  • 深入理解Nginx中的sites-enabled目录

    Nginx 是一个高性能的 HTTP 服务器和反向代理服务器,广泛用于网站和应用的部署中。在 Nginx 的配置管理中,sites-enabled 目录扮演了一个重要角色…

    nginx 2024年12月17日
  • Nginx配置支持IPV6地址的方法示例

    搭建并测试 1. 下载 NG 安装包 点击进入 Nginx 网址,下载安装包 2. 安装编译工具及库文件 yum -y install make zlib zlib-de…

    2024年12月17日
  • nginx代理转发配置小结

    Nginx配置代理转发是一个常见的需求,用于将客户端的请求转发到后端服务器。以下是Nginx代理转发的配置步骤,包括详细的操作步骤和注意事项: 1. 确定Nginx安装和配置文件位…

    nginx 2024年12月17日
  • nginx配置https的双向认证方式

    注意事项 配置双向认证,这里的common name需要都配置成不同 nginx 配置 https的双向认证 准备工作 linux环境安装openssl 生成证书步骤 1.新建一个…

    2024年12月17日
  • Nginx服务器配置https安全协议的实现

    一、简介 HTTP是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效…

    2024年12月17日
  • Nginx中return和rewrite的写法及区别浅析

    引言 在Nginx中,return和rewrite都用于重定向请求,但还是有区别,写法也不一样。 1、return和rewrite区别 执行方式: return:立即终止当前请求处…

    nginx 2024年12月17日
  • nginx配置history模式的使用小结

    本文主要介绍了nginx配置history模式的使用小结,具体如下: worker_processes 1; events { worker_connections 1024; }…

    nginx 2024年12月17日
  • Nginx中try_files指令的实现示例

    1. 简介 try_files是Nginx中一个非常强大且常用的指令,其用于按顺序检查文件是否存在,并将请求传递给第一个找到的文件,或者在所有文件都未找到时,执行一个回退URI。该…

    nginx 2024年12月17日

发表回复

登录后才能评论