负载均衡是通过将网络流量分发到多个服务器来提高应用性能、可靠性和可用性的技术。Nginx作为高性能的反向代理服务器,可以很好地实现这一功能。
在Nginx配置文件中(通常位于/etc/nginx/nginx.conf
或/etc/nginx/conf.d/
目录下):
http {
upstream backend {
# 定义负载均衡策略
# least_conn; # 最少连接数策略
# ip_hash; # 基于客户端IP的哈希策略
# 添加后端服务器
server backend1.example.com weight=3;
server backend2.example.com;
server backend3.example.com max_fails=3 fail_timeout=30s;
}
}
server {
listen 80;
server_name domain1.com;
location / {
proxy_pass http://backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
server {
listen 80;
server_name domain2.com;
location / {
proxy_pass http://backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
weight
参数分配不同权重least_conn
指令ip_hash
指令(保持会话一致性)upstream backend {
server backend1.example.com max_fails=3 fail_timeout=30s;
server backend2.example.com max_fails=3 fail_timeout=30s;
# 被动健康检查
# max_fails: 失败次数阈值
# fail_timeout: 超时时间
}
server {
listen 443 ssl;
server_name domain1.com;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;
location / {
proxy_pass http://backend;
# 其他代理设置...
}
}
http {
upstream web_servers {
least_conn;
server 192.168.1.100:8080 weight=2;
server 192.168.1.101:8080;
server 192.168.1.102:8080 max_fails=3 fail_timeout=30s;
}
upstream api_servers {
ip_hash;
server 192.168.1.200:8000;
server 192.168.1.201:8000;
}
server {
listen 80;
server_name www.example.com example.com;
location / {
proxy_pass http://web_servers;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
server {
listen 80;
server_name api.example.com;
location / {
proxy_pass http://api_servers;
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 -t
重载配置:
nginx -s reload
性能监控:
ngx_http_stub_status_module
监控Nginx状态缓存优化:
proxy_cache_path /path/to/cache levels=1:2 keys_zone=my_cache:10m inactive=60m;
location / {
proxy_cache my_cache;
proxy_pass http://backend;
# 其他配置...
}
502 Bad Gateway错误:
proxy_connect_timeout
值负载不均衡:
会话保持问题:
ip_hash
或sticky
模块通过以上配置,您可以实现基于Nginx的多域名流量分发和负载均衡,提高网站或应用的性能和可靠性。