浅谈Nginx七层反向代理和负载均衡

2019-10-17 17:29:28刘景俊

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;

}
  }