Nginx安装
- 本文章主要介绍下,如何使用Nginx来实现反向代理和负载均衡,Nginx安装和基础知识,可参考我的这篇文章 Nginx安装。
Nginx实现反向代理
- 实现反向代理需要准备两台Nginx服务器。一台Nginx服务器A,ip为 192.168.206.140,一台Nginx服务器B,ip为192.168.206.141。
- 为了便于区分,我们先修改下Nginx服务器B的index.html页面,修改后启动Nginx,访问页面如下
- 然后,我们用Nginx服务器A来实现反向代理。Nginx服务器A上的nginx配置文件修改如下
-
worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; # 设置反向代理 upstream slave1.net{ server 192.168.206.141:80; } server { listen 80; server_name localhost; location / { # 设置代理 proxy_pass http://slave1.net; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } }
- 在浏览器中访问Nginx服务器A时,会访问server模块的server_name,然后去找location,默认配置中,会去加载location中的html目录下index.html页面。配置反向代理后,就会根据slave1.net这个url去找upstream,找到之后就会去访问upstream中对应的server地址。这里配置的是Nginx服务器B的地址,那么就会去访问Nginx服务器B。
- 看下效果,在浏览器中输入Nginx服务器A的地址,会访问到Nginx服务器B。成功实现了反向代理。
Nginx实现负载均衡
- 实现负载均衡至少需要3台Nginx服务器,我们再加一台Nginx服务器C,ip为192.168.206.142。负载均衡是在反向代理的基础上实现的。
- 同理为了便于区分,我们修改下Nginx服务器C的html页面,修改后如下
- Nginx服务器A的配置文件做以下修改,和设置反向代理的配置基本一致,只不过需要在upstream模块中再配置一台Nginx服务器,再去设置下权重weight,即访问目标服务器的频率,该值最小为1,无上限。如果不设置weight,那么访问目标服务器的概率就是均等的。
-
worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; upstream slave1.net{ server 192.168.206.141:80 weight=2; server 192.168.206.142:80 weight=1; } server { listen 80; server_name localhost; location / { # 设置代理 proxy_pass http://slave1.net; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } }
- 配置完成后,重新加载配置。然后在浏览器中访问Nginx服务器A
- 实测可以发现,访问3次Nginx服务器A,有两次会代理到Nginx服务器B,有一次会代理到Nginx服务器C。至此,我们也成功实现了负载均衡。