宝塔面板网站502 Bad Gateway无法正常打开的解决过程

站点部署情况:

前端vue、后端接口API thinkphp6.1,
采用宝塔面板部署,前端后端均强制使用https协议;
前端站点配置反向代理访问api;

症状:

前端页面正常打开,访问api提示服务器错误,浏览器Devtools查看网络选项卡,发现所有反向代理的post请求都返回的502 Bad xxxx;

解决过程
  1. 打开api站点添加测试路由直接访问,发现正常返回数据 (说明api站点没有问题)
  2. 查看前端网站日志,日志提示:[error] 27383#0: *63259 upstream prematurely closed connection while reading response header from upstream,
  3. 查看api站点WAF,关闭站点WAF 访问恢复正常
  4. 去掉所有WAF设置和规则,打开WAF,又提示502
  5. 修改前端站点反向代理配置文件加入超时配置如下,重启Nginx问题解决
proxy_connect_timeout 60s;
proxy_send_timeout 60s;
proxy_read_timeout 300s;
proxy_buffering off;

  1. 恢复所有WAF设置和规则,开启WAF,依旧正常,至此问题解决
原因

upstream prematurely closed connection
表示 后端服务(upstream,即 xxx.xxx.xxx.xxx:443)在 Nginx 还没读到完整的响应头时就断开了连接。

Nginx 是作为反向代理,把请求转发到 upstream,但后端还没返回正确的 HTTP 响应头就关闭了连接,所以 Nginx 报错。

所以考虑调整反向代理超时时间解决

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容