1、多个服务器访问一个应用为集群
2、多个服务器多个业务拆分为分布式
3、基本负载均衡配置
1、轮询,默认的负载均衡策略是轮询,即请求均匀地分布到每个上游服务器。
upstream backend {
server www.fz1.com:80;
server www.fz2.com:80;
}
2、权重,可以为每个上游服务器设置权重,权重越高,分配的请求越多。
upstream backend {
server www.fz1.com:80 weight=3;
server www.fz2.com:80 weight=1;
}
3、最少连接,将请求分发到当前连接数最少的服务器。
upstream backend {
least_conn;
server www.fz1.com:80;
server www.fz2.com:80;
}
4、IP Hash,基于客户端 IP 地址的哈希值分配请求,确保来自同一客户端的请求始终分配到同一台服务器。
upstream backend {
ip_hash;
server www.fz1.com:80;
server www.fz2.com:80;
}
5、基本健康检查,可以设置失败次数和失败超时时间来进行基本的健康检查。
upstream backend {
server www.fz1.com:80 max_fails=3 fail_timeout=30s;
server www.fz2.com:80 max_fails=3 fail_timeout=30s;
}
超时设置
可以设置连接超时、发送超时和接收超时。
proxy_connect_timeout 60s;
proxy_send_timeout 60s;
proxy_read_timeout 60s;
4、用户访问的服务器:nginx
upstream backend {
server www.fz1.com:8081;
server www.fz2.com:8082;
}
server {
listen 80;
server_name www.fz.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;
proxy_set_header X-Forwarded-Proto $scheme;
# 日志配置,用于调试
access_log D:/xxx/xxx/xxx/logs/fz_access.log;
error_log D:/xxx/xxx/xxx/logs/fz_error.log debug;
}
}
server {
listen 8081;
server_name www.fz1.com;
root "D:/xxx/xxx/www.fz1.com";
location / {
index index.php index.html error/index.html;
error_page 400 /error/400.html;
error_page 403 /error/403.html;
error_page 404 /error/404.html;
error_page 500 /error/500.html;
error_page 501 /error/501.html;
error_page 502 /error/502.html;
error_page 503 /error/503.html;
error_page 504 /error/504.html;
error_page 505 /error/505.html;
error_page 506 /error/506.html;
error_page 507 /error/507.html;
error_page 509 /error/509.html;
error_page 510 /error/510.html;
include D:/xxx/xxx/www.fz1.com/nginx.htaccess;
autoindex off;
access_log D:/xxx/xxx/xxx/logs/fz1_access.log;
error_log D:/xxx/xxx/xxx/logs/fz1_error.log debug;
}
location ~ \.php(.*)$ {
fastcgi_pass 127.0.0.1:9001;
fastcgi_index index.php;
fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
include fastcgi_params;
}
}
server {
listen 8082;
server_name www.fz2.com;
root "D:/xxx/xxx/www.fz2.com";
location / {
index index.php index.html error/index.html;
error_page 400 /error/400.html;
error_page 403 /error/403.html;
error_page 404 /error/404.html;
error_page 500 /error/500.html;
error_page 501 /error/501.html;
error_page 502 /error/502.html;
error_page 503 /error/503.html;
error_page 504 /error/504.html;
error_page 505 /error/505.html;
error_page 506 /error/506.html;
error_page 507 /error/507.html;
error_page 509 /error/509.html;
error_page 510 /error/510.html;
include D:/xxx/xxx/www.fz2.com/nginx.htaccess;
autoindex off;
access_log D:/xxx/xxx/xxx/logs/fz2_access.log;
error_log D:/xxx/xxx/xxx/logs/fz2_error.log debug;
}
location ~ \.php(.*)$ {
fastcgi_pass 127.0.0.1:9001;
fastcgi_index index.php;
fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
include fastcgi_params;
}
}