http {
upstream live_node { # 配置后端服务器组
#max_fails默认值为1,fail_timeout默认值为10s,max_fails=0表示不做检查
server 127.0.0.1:8089 weight=1 max_fails=1 fail_timeout=10s;
server 127.0.0.1:8088;
keepalive 32;
hash $request_uri consistent;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://live_node;
# 注意:proxy_pass后面的路径不带uri时,
其会将location的uri传递给后端主机
proxy_set_header Host $host;
# 保留客户端的真实信息
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Real-PORT $remote_port;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_redirect off;
proxy_buffer_size 128k;
proxy_buffers 32 32k;
proxy_busy_buffers_size 128k;
}
}
server { # 配置虚拟服务器8088
listen 8088;
server_name localhost;
location / {
root /usr/local/nginx/html2;
index index.html index.htm;
}
}
server { # 配置虚拟服务器8089
listen 8089;
server_name localhost;
location / {
root /usr/local/nginx/html3;
index index.html index.htm;
}
}
}
http {
upstream live_node { # 配置后端服务器组
server 127.0.0.1:8089 weight=5; # 这个处理客户端请求会多些
server 127.0.0.1:8088 weight=1; # 默认 weight = 1
}
server {
listen 80;
server_name localhost;
location / {
#proxy_pass http://new_uri/; # 注意:proxy_pass后面的路径是一个uri时,其会将location的uri替换为proxy_pass的uri
proxy_pass http://live_node;
proxy_set_header Host $host; # 保留客户端的真实信息
}
}
server { # 配置虚拟服务器8088
listen 8088;
server_name localhost;
location / {
root /usr/local/nginx/html2;
index index.html index.htm;
}
}
server { # 配置虚拟服务器8089
listen 8089;
server_name localhost;
location / {
root /usr/local/nginx/html3;
index index.html index.htm;
}
}
}
http {
upstream videobackend { # 配置后端服务器组视频代理
server 127.0.0.1:8088;
server 127.0.0.1:8089;
}
upstream filebackend { # 配置后端服务器组文件代理
server 127.0.0.1:8888;
server 127.0.0.1:8889;
}
server {
listen 80;
server_name localhost;
location /video/ {
proxy_pass http://videobackend; # 视频代理
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
# proxy_set_header field value; 设定发往后端主机的请求报文的请求首部的值
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /file/ {
proxy_pass http://filebackend; # 文件代理
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 { # 配置虚拟服务器8088
listen 8088;
server_name localhost;
location /video {
alias /usr/local/nginx/html2;
}
}
server { # 配置虚拟服务器8089
listen 8089;
server_name localhost;
location /video {
alias /usr/local/nginx/html3;
}
}
server { # 文件虚拟服务器1
listen 8888;
server_name localhost;
location /file {
alias /usr/local/nginx/html4;
}
}
server { # 文件虚拟服务器2
listen 8889;
server_name localhost;
location /file {
alias /usr/local/nginx/html5;
}
}
}
四、实现带有URL重写的负载均衡
http {
upstream backend { # 配置后端服务器组
server 127.0.0.1:8888;
server 127.0.0.1:8889;
}
server {
listen 80;
server_name www.backend.com;
index index.html index.htm;
location /file/ {
rewrite ^(/file/.*)/media/(.*)\.*$ $1/mp3/$2.mp3 last;
}
location / {
proxy_pass http://frontend; # 前台域名代理
proxy_set_header Host $host;
}
}
}