Nginx是一个高性能的HTTP服务器和反向代理服务器,下面我将详细介绍如何使用Nginx配置反向代理和负载均衡。
server {
listen 80;
server_name example.com;
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;
}
}
proxy_pass
: 指定后端服务器地址proxy_set_header
: 设置转发给后端服务器的请求头
Host
: 保持原始请求的主机头X-Real-IP
: 传递客户端真实IPX-Forwarded-For
: 追加代理链信息location / {
proxy_pass http://backend_server;
proxy_redirect off;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 300s;
proxy_connect_timeout 75s;
proxy_send_timeout 60s;
proxy_buffer_size 4k;
proxy_buffers 8 16k;
}
upstream backend {
server backend1.example.com;
server backend2.example.com;
server backend3.example.com;
}
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend;
}
}
nginx
upstream backend {
server backend1.example.com weight=3;
server backend2.example.com weight=2;
server backend3.example.com;
}
nginx
upstream backend {
ip_hash;
server backend1.example.com;
server backend2.example.com;
}
nginx
upstream backend {
least_conn;
server backend1.example.com;
server backend2.example.com;
}
upstream backend {
server backend1.example.com max_fails=3 fail_timeout=30s;
server backend2.example.com max_fails=3 fail_timeout=30s;
# 主动健康检查(需要Nginx Plus)
# health_check interval=5s fails=3 passes=2 uri=/health;
}
http {
upstream backend {
least_conn;
server 10.0.0.1:8080 weight=3 max_fails=2 fail_timeout=30s;
server 10.0.0.2:8080 weight=2;
server 10.0.0.3:8080;
keepalive 32; # 保持连接池
}
server {
listen 80;
server_name example.com;
access_log /var/log/nginx/example.access.log;
error_log /var/log/nginx/example.error.log;
location / {
proxy_pass http://backend;
proxy_http_version 1.1;
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 Connection "";
# 超时设置
proxy_connect_timeout 5s;
proxy_read_timeout 60s;
proxy_send_timeout 30s;
# 缓冲区设置
proxy_buffering on;
proxy_buffer_size 4k;
proxy_buffers 8 16k;
}
# 健康检查端点
location /nginx_status {
stub_status;
allow 127.0.0.1;
deny all;
}
}
}
502 Bad Gateway错误
proxy_connect_timeout
值负载不均衡
least_conn
算法性能优化
keepalive
连接减少TCP握手开销日志调试
/var/log/nginx/error.log
通过以上配置,您可以轻松实现Nginx的反向代理和负载均衡功能,根据实际需求调整参数即可获得最佳性能。