proxy_set_header X-Forwarded-For $remote_addr 开启负载均衡器转发真实客户的IP地址给RS.
注意:
“proxy_set_header”当我们的RS有多个虚拟主机(相同的ip,相同的端口)的时候如www、bbs、blog,代理服务器怎么知道将请求发到哪呢,这个时候nginx代理就会查找proxy_set_header参数,将请求发送到相应域名的虚拟主机上。
3.nginx负载均衡配置案例
1.有三个域名:www.beyond.com bbs.beyond.com film.beyond.com,四台webserver负责提供服务
2.有一个mailserver和cloud server在一台服务器上
规划:
web1 192.168.254.251 BBS、film
web2 192.168.254.252 BBS、film
web3 192.168.254.253 BBS、film
web4 192.168.254.254 www,负载均衡器
web5 192.168.254.250 mail cloud
说明:web4是负载均衡器,同时也负责解析www站点。web1、web2、web3负责解析bbs和film站点。Mail和cloud在同一台设备上,也是web站点
Nginx的安装略了,有需要的可以看此教程 https://www.jb51.net/article/128758.htm
现在列出web4的nginx的配置文件供参考
nginx.conf:
user nginx;
worker_processes 4;
error_log logs/error.log;
pid logs/nginx.pid;
events {
use epoll ;
worker_connections 1024;
http {
include mime.types;
default_type application/octet-stream;
server_tokens off;
sendfile on;
tcp_nopush on;
keepalive_timeout 65;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
client_header_buffer_size 32k;
large_client_header_buffers 4 128k;
client_max_body_size 10m;
gzip on;
gzip_min_length 1k;
gzip_buffers 4 8k;
gzip_http_version 1.1;
gzip_comp_level 6;
gzip_vary on;
gzip_types text/javascript text/plain application/x-javascript text/css application/xml;
log_format main ' $http_host $http_x_forwarded_for ${request_time}s [$time_local] "$request" $status $body_bytes_sent $http_referer $http_user_agent $remote_addr';
include vhosts/*.conf; #每个虚拟主机一个配置文件
include upstream.conf; #存放web的后台server
fastcgi_intercept_errors on;
}
Vhosts/{bbs,film,www,cloud,mail}.conf:
server {
listen 80;
server_name bbs.beyond.com;
index index.php;
location / {
proxy_pass http://web;
proxy_set_header host $host;
proxy_set_header X-Forwarded-For $remote_addr;
client_body_buffer_size 4K;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4K;
proxy_buffers 4 32K;
proxy_busy_buffers_size 64K;
proxy_temp_file_write_size 64K;
}
}








