解决方案:
# 检查配置语法
nginx -t
# 重新加载配置
nginx -s reload
# 或完整重启
systemctl restart nginx
解决方案:
location /api/ {
# 确保proxy_pass以/结尾时去除location前缀
proxy_pass http://backend_server/;
# 常用代理头设置
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
nginx
location /old-path/ {
# 重写路径示例
rewrite ^/old-path/(.*) /new-path/$1 break;
proxy_pass http://backend_server;
}
解决方案:
upstream backend {
server 10.0.0.1:8080;
server 10.0.0.2:8080;
# 可添加负载均衡策略
least_conn;
}
server {
location / {
proxy_pass http://backend;
}
}
检查Nginx错误日志
tail -f /var/log/nginx/error.log
验证后端服务可访问性
curl -v http://backend_server:port
检查网络连接
telnet backend_server port
# 或
nc -zv backend_server port
使用详细日志调试
server {
# 启用调试日志
error_log /var/log/nginx/debug.log debug;
location / {
# 添加请求头用于跟踪
add_header X-Proxy-Pass $proxy_pass;
proxy_pass http://backend;
}
}
检查DNS解析
location / {
proxy_buffering off; # 禁用缓冲进行测试
proxy_pass http://backend;
}
location / {
proxy_pass http://backend;
proxy_connect_timeout 60s;
proxy_read_timeout 60s;
proxy_send_timeout 60s;
}
location / {
proxy_pass https://backend;
proxy_ssl_verify off; # 测试时可临时关闭验证
proxy_ssl_server_name on;
}
当Nginx转发不生效时,建议按照以下顺序排查: 1. 检查配置语法并重新加载 2. 验证后端服务可访问性 3. 检查日志获取具体错误信息 4. 逐步简化配置进行测试 5. 检查网络和防火墙设置
通过系统化的排查,通常可以快速定位并解决转发不生效的问题。