Nging可以作为反代服务器;也可以作为负载均衡器,并自带根据对后端服务器健康状态检测具有增删服务器的功能;也可以作为纯Web服务器,提供Web服务。
本实验将使用Nginx实现上述三种功能。
值得注意的是:Nginx的负载均衡调度功能是依赖反代功能才能实现的,所以,如果详细的描述拓扑结构的话,Nginx服务器的反代功能更靠近前端些,负载均衡调度功能肯定在反代一层的下一层。负载均衡功能不可能出现在反代的前一层。
实验中的https加密和缓存实验仅仅为了复习,与本实验的主体无密切关系。
实验说明
本次实验所用的反代服务器和Web服务器均使用Nginx程序,实验环境为CentOS7.3。
绘制实验拓扑图
graph TD A[Client] -->|请求| B{Nginx} B -->|响应| A B -->|反代 & 调度| C(Web Server 1) B -->|反代 & 调度| E(Web Server 2)
各主机节点的角色分配:
后端两台Web服务器使用Nginx提供纯Web服务。
前端一台Nginx服务器作为反向代理服务器和负载均衡器,同时具有反向代理和负载均衡调度两个功能。
IP分配:
Nginx Address :172.16.50.2(面向公网)、192.168.50.129(面向后端服务器)
Web Server 1 Address :192.168.50.128
Web Server 2 Address :192.168.50.131
节点间的关系如图所示。
实验过程
vim /etc/nginx/conf.d/vhost.conf server { listen 80; server_name 192.168.50.128; root /web/nginx/html/vhost1; index index.html; } server { listen 8080; server_name 192.168.50.128; root /web/nginx/html/vhost2; index index.html; } server { listen 443 ssl; server_name nginx.achudk.com; root /web/nginx/ssl/vhost1; ssl on; ssl_certificate "/etc/pki/CA/certs/nginx.crt"; ssl_certificate_key "/etc/pki/CA/nginx.pem"; }
在实际生产环境中,两台web服务器提供的内容必须一致,本实验为了演示效果,故意将两台服务器的web页面不同,以示区别。
要求:代理webserver1服务器的所有虚拟主机提供的站点
【注】
-
反代服务器可以设置两个网卡,外侧设置为公网,内侧设置为私网,可以代理ip为公网的或ip为私网的WebServer。
-
在实验过程中,可能会出现意外情况,可以试试删除反代服务器的缓存后再试试。
vim /etc/nginx/nginx.conf # 在http{ }的上下文中添加如下内容 proxy_cache_path /var/cache/nginx/proxy_cache80 levels=1:2:1 keys_zone=proxycache80:20m max_size=1g; upstream websrvs { server 192.168.50.128:80 weight=1 max_fails=2 fail_timeout=3s; server 192.168.50.131:80 weight=1; server 127.0.0.1 backup; # least_conn; # hash $remote_addr; hash $request_uri consistent; keepalive 25; }
vim /etc/nginx/conf.d/reverse_proxy.conf server { listen 80; server_name 172.16.50.2; location / { proxy_pass http://websrvs; proxy_cache proxycache80; proxy_cache_key $request_uri; proxy_cache_valid 200 302 301 2m; proxy_cache_valid any 1m; proxy_connect_timeout 70; } }
当down掉一台web服务器时,仅有另一台提供web服务
当两台web服务器都down掉时,会显示sorry server页面。
原文链接:https://www.cnblogs.com/lijian-22huxiaoshan/p/7368188.html