要配置Nginx作为反向代理,主要使用proxy_pass
指令。以下是一个基本配置示例:
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend_server_ip:backend_port;
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 Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_connect_timeout 60s;
proxy_send_timeout 60s;
proxy_read_timeout 60s;
proxy_buffering on;
proxy_buffer_size 4k;
proxy_buffers 8 16k;
proxy_busy_buffers_size 24k;
proxy_max_temp_file_size 0;
upstream backend {
server backend1.example.com weight=5;
server backend2.example.com;
server backend3.example.com;
# 负载均衡方法
# least_conn; # 最少连接
# ip_hash; # IP哈希
}
server {
location / {
proxy_pass http://backend;
}
}
location /ws/ {
proxy_pass http://backend;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;
location / {
proxy_pass http://backend;
proxy_set_header X-Forwarded-Proto https;
}
}
502 Bad Gateway错误
proxy_connect_timeout
值代理后获取真实客户端IP
X-Real-IP
和X-Forwarded-For
头性能优化
proxy_buffering
重定向问题
proxy_redirect
指令Host
头正确传递检查Nginx错误日志:
tail -f /var/log/nginx/error.log
检查代理头是否传递正确:
add_header X-Debug-Proxy-Pass $proxy_host;
add_header X-Debug-Real-IP $remote_addr;
使用curl测试:
curl -v http://your-nginx-server -H "Host: example.com"
希望这些信息能帮助你配置Nginx反向代理。如果有更具体的需求或问题,请提供更多细节。