Nginx实现HTTP负载均衡

下面是配置nginx负载均衡的简单示例文件,主要作用是:
www.s135.com 和 blog.s135.com 域名均指向 Nginx 所在的服务器IP。用户访问http://www.s135.com,将其负载均衡到192.168.1.2:80、92.168.1.3:80、192.168.1.4:80、192.168.1.5:80四台服务器。用户访问http://blog.s135.com,将其负载均衡到192.168.1.7服务器的8080、8081、8082端口。获取用户真实IP.

  1. user  www www;
  2.  
  3. worker_processes 10;
  4.  
  5. #error_log  logs/error.log;
  6. #error_log  logs/error.log  notice;
  7. #error_log  logs/error.log  info;
  8.  
  9. #pid        logs/nginx.pid;
  10.  
  11. #最大文件描述符
  12. worker_rlimit_nofile 51200;
  13.  
  14. events
  15. {
  16.       use epoll;
  17.  
  18.       worker_connections 51200;
  19. }
  20.  
  21. http
  22. {
  23.       include       conf/mime.types;
  24.       default_type  application/octet-stream;
  25.  
  26.       keepalive_timeout 120;
  27.  
  28.       tcp_nodelay on;
  29.  
  30.       upstream  www.s135.com  {
  31.               server   192.168.1.2:80;
  32.               server   192.168.1.3:80;
  33.               server   192.168.1.4:80;
  34.               server   192.168.1.5:80;
  35.       }
  36.  
  37.       upstream  blog.s135.com  {
  38.               server   192.168.1.7:8080;
  39.               server   192.168.1.7:8081;
  40.               server   192.168.1.7:8082;
  41.       }
  42.  
  43.       server
  44.       {
  45.               listen  80;
  46.               server_name  www.s135.com;
  47.  
  48.               location / {
  49.                        proxy_pass        http://www.s135.com;
  50.                        proxy_set_header   Host             $host;
  51.                        proxy_set_header   X-Real-IP        $remote_addr;
  52.                        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
  53.               }
  54.  
  55.               log_format  www_s135_com  '$remote_addr - $remote_user [$time_local] $request '
  56.                                 '"$status" $body_bytes_sent "$http_referer" '
  57.                                 '"$http_user_agent" "$http_x_forwarded_for"';
  58.               access_log  /data1/logs/www.log  www_s135_com;
  59.       }
  60.  
  61.       server
  62.       {
  63.               listen  80;
  64.               server_name  blog.s135.com;
  65.  
  66.               location / {
  67.                        proxy_pass        http://blog.s135.com;
  68.                        proxy_set_header   Host             $host;
  69.                        proxy_set_header   X-Real-IP        $remote_addr;
  70.                        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
  71.               }
  72.  
  73.               log_format  blog_s135_com  '$remote_addr - $remote_user [$time_local] $request '
  74.                                 '"$status" $body_bytes_sent "$http_referer" '
  75.                                 '"$http_user_agent" "$http_x_forwarded_for"';
  76.               access_log  /data1/logs/blog.log  blog_s135_com;
  77.       }
  78. }

这里主要用到两个模块:
1.HTTP负载均衡模块(HTTP Upstream),其中的一些字段解释:
server:指定后端服务器的名称和一些参数,可以使用域名,IP,端口,或者unix socket。如果指定为域名,则首先将其解析为IP。
upstream:这个字段设置一群服务器,可以将这个字段放在proxy_pass和fastcgi_pass指令中作为一个单独的实体,它们可以可以是监听不同端口的服务器,并且也可以是同时监听TCP和Unix socket的服务器。
2.HTTP代理模块(HTTP Proxy)
这个模块可以转发请求到其他的服务器。
proxy_pass:这个指令设置被代理服务器的地址和被映射的URI,地址可以使用主机名或IP加端口号的形式
proxy_set_header:这个指令允许将发送到被代理服务器的请求头重新定义或者增加一些字段。这个值可以是一个文本,变量或者它们的组合。
参考网址:
HTTP代理模块(HTTP Proxy)
HTTP负载均衡模块(HTTP Upstream)
http://blog.s135.com/post/306/

标签:Nginx 发布于:2019-11-24 16:59:14