You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Nginx反向代理运行一日后出现504超时及401认证问题求助

Nginx反向代理问题排查与解决

一、运行一段时间后出现504超时问题

核心原因

  • 与AWS私有负载均衡器的连接未复用,频繁创建销毁连接导致资源耗尽
  • 未配置合理的上游超时参数,上游处理慢时触发Nginx超时
  • Nginx worker进程数不足,并发处理能力跟不上

配置调整方案

  1. 配置上游连接池,启用长连接复用
    在http块中添加上游定义:
upstream aws_private_lb {
    server example.com;
    keepalive 32; # 保持32个长连接,可根据实际并发量调整
}

修改location中的proxy_pass为:

proxy_pass http://aws_private_lb/$request_uri;
  1. 添加代理超时参数
    在location块中补充以下配置:
proxy_connect_timeout 30s;   # 连接上游的超时时间
proxy_send_timeout 60s;      # 向上游发送请求的超时时间
proxy_read_timeout 60s;      # 读取上游响应的超时时间
proxy_http_version 1.1;      # 启用HTTP/1.1以支持长连接
proxy_set_header Connection ""; # 清除客户端的Connection头,由Nginx管理长连接
  1. 优化Nginx worker进程数
    在events块顶部添加:
worker_processes auto; # 根据CPU核数自动设置进程数,提升并发处理能力

二、Base64认证字符串触发提前401错误问题

问题分析

当前server块全局启用了auth_basic认证,所有请求都会先经过Nginx的本地认证校验,导致客户端携带的Base64认证头无法传递到下游服务就被拦截。若该location无需Nginx本地认证,仅需将认证头透传给下游,可按以下调整:

配置调整方案

在目标location块中关闭本地认证,并修正认证头传递的变量:

location ~* "^/regex/$" {
    auth_basic off; # 关闭当前路径的Nginx本地认证
    proxy_pass http://aws_private_lb/$request_uri;
    proxy_redirect off;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Authorization $http_authorization; # 传递客户端的Authorization头给下游
    # 补充超时配置
    proxy_connect_timeout 30s;
    proxy_send_timeout 60s;
    proxy_read_timeout 60s;
    proxy_http_version 1.1;
    proxy_set_header Connection "";
}

三、日志排查优化

将error_log级别调整为debug,获取更详细的请求处理日志:

error_log /var/log/nginx/error.log debug;

重启Nginx后,查看/var/log/nginx/error.log可定位超时、认证等问题的具体原因。

内容的提问来源于stack exchange,提问作者Arcticquiff

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 15:55:01