Nginx 负载均衡配置
Nginx有一个主要的功能就是负载均衡,负载均衡可以让Nginx将客户端传过来的请求分配到代理的服务上。
首先配置两个虚拟主机,然后分别使用81和82 端口监听。
主配置文件nginx.conf
[root@node1 conf]# cat nginx.conf worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; include domains/*; }
虚拟主机1 v1.ryan.net使用81端口。
[root@node1 domains]# cat v1.ryan.net server { listen 81; server_name v1.ryan.net; location / { root /data/www/v1.ryan.net/; index index.html index.htm; } error_page 404 403 500 502 503 504 /50x.html; location = /50x.html { root /data/www/v1.ryan.net/; } }
虚拟主机2 v2.ryan.net使用82端口。
[root@node1 domains]# cat v2.ryan.net server { listen 82; server_name v2.ryan.net; location / { root /data/www/v2.ryan.net/; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }
然后重启nginx服务。
[root@node1 domains]# /usr/pkgs/nginx/sbin/nginx -s reload [root@node1 domains]# netstat -ntlp |grep nginx tcp 0 0 0.0.0.0:81 0.0.0.0:* LISTEN 18125/nginx: master tcp 0 0 0.0.0.0:82 0.0.0.0:* LISTEN 18125/nginx: master
然后我们配置加入负载均衡配置。
upstream块,定义一个上游服务器集群,便于反向代理中proxy_pass使用。
server块,配置指定一台上游服务器名字,可以是域名,ip地址端口,UNIX句柄等。
weight 设置向这台上游服务器转发的权重,默认为1.
max_fails 与fail_timeout配合使用,在fail_timeout时间段内,如果上游某个服务器失败次数超过max_fails。则 fail_timeout时间段内,这个服务器不可用,不再对该服务器发送请求。
ip_hash 根据客户端的ip,生成一个hash值,然后将该has值与集群里的服务器进行取模,然后把取模后的结果发到相应的服务器上,这样每个ip都会有自己固定的上游服务器。 ip_hash与 weight不能同时使用。
proxy_pass 反向代理模块,proxy_pass将当前请求反向代理到URL参数指定的服务器上,URL可以是主机名,或IP端口号的形式。也可以是UNIX句柄,也可以说upstream块的名字,
[root@node1 domains]# cat proxy.net upstream test_proxy{
#ip_hash; server 192.168.31.100:81 weight=100 max_fails=2 fail_timeout=15; server 192.168.31.100:82 weight=100 max_fails=2 fail_timeout=15; } server{ listen 80; server_name v.ryan.net; location / { proxy_pass http://test_proxy; proxy_set_header Host $host; index index.html index.htm; } }
然后重启nginx服务。
[root@node1 domains]# /usr/pkgs/nginx/sbin/nginx -s reload [root@node1 domains]# netstat -ntlp |grep nginx tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 18125/nginx: master tcp 0 0 0.0.0.0:81 0.0.0.0:* LISTEN 18125/nginx: master tcp 0 0 0.0.0.0:82 0.0.0.0:* LISTEN 18125/nginx: master
然后在自己window电脑上 修改dns解析
然后访问 v.ryan.net测试负载均衡是否起作用。
访问v.ryan.net可以看到请求分配到v2.ryan.net
刷新v.ryan.net 可以看到请求分配到v1.ryan.net,这样就实现了负载均衡。