网站优点惠州网站建设效果
一、Nginx反向代理(七层代理)
实验要求
使用Nginx实现Web反向代理功能,实现如下功能: 后端Web服务器两台,可以使用httpd实现Nginx采用轮询的方式调用后端Web服务器两台Web服务器的权重要求设置为不同的值最大失败次数为2,失败超时时间为30秒
实验环境
以下机器全部已经存在,无须再次配置主机名	IP地址	角色
server1(已存在)	eth0:192.168.99.254/24	客户端
proxy(已存在)	eth1:192.168.99.5/24	代理服务器
web1(已存在)	eth1:192.168.99.100/24	web服务器
web2(已存在)	eth1:192.168.99.200/24	web服务器
image-202410082130582811)部署后端Web服务器
1)部署后端Web1服务器
后端Web服务器可以简单使用yum方式安装httpd实现Web服务,为了可以看出后端服务器的不同,可以将两台后端服务器的首页文档内容设置为不同的内容
[root@web1 ~]# yum -y install httpd
[root@web1 ~]# echo "web1" > /var/www/html/index.html
[root@web1 ~]# systemctl enable --now httpd2)部署后端Web2服务器
[root@web2 ~]# yum -y install  httpd
[root@web2 ~]# echo "web2" > /var/www/html/index.html
[root@web2 ~]# systemctl enable --now httpd3)使用proxy主机测试
[root@proxy ~]# curl 192.168.99.100
web1
[root@proxy ~]# curl 192.168.99.200
web2
2)配置Nginx代理服务器
添加服务器池,实现反向代理功能之前proxy主机安装的nginx已经改过很多配置,避免实验冲突,先还原proxy主机的nginx,重新安装nginx
[root@proxy ~]# /usr/local/nginx/sbin/nginx  -s stop    #如果之前没有启动,可以不用执行停止的命令
[root@proxy ~]# rm -rf /usr/local/nginx/
[root@proxy ~]# cd /root/lnmp_soft/
[root@proxy lnmp_soft]# rm -rf nginx-1.22.1
[root@proxy lnmp_soft]# tar -xf nginx-1.22.1.tar.gz
[root@proxy lnmp_soft]# cd nginx-1.22.1/
[root@proxy nginx-1.22.1]# yum -y install gcc make pcre-devel openssl-devel
[root@proxy nginx-1.22.1]# ./configure 
[root@proxy nginx-1.22.1]# make && make  install    1)修改nginx的配置文件
[root@proxy nginx-1.22.1]# vim /usr/local/nginx/conf/nginx.conf
...
http {
...
#使用upstream定义后端服务器集群,集群名称任意(如webserver)
#使用server定义集群中的具体服务器和端口upstream webserver {server 192.168.99.100:80;server 192.168.99.200:80;}server {listen       80;server_name  localhost;#charset koi8-r;#access_log  logs/host.access.log  main;location / {root   html;index  index.html index.htm;proxy_pass http://webserver;  #通过proxy_pass将用户的请求转发给webserver集群}...2)启动nginx
[root@proxy nginx-1.22.1]# /usr/local/nginx/sbin/nginx3)使用真机浏览器做测试192.168.99.5,刷新可以看到网站的轮询效果,出现结果为 web1 或者 web2
3)配置upstream服务器集群池属性
1)设置权重
weight可以设置后台服务器的权重,权重越大任务的分配量就越大
[root@proxy nginx-1.22.1]# vim /usr/local/nginx/conf/nginx.conf
.. ..upstream webserver {server 192.168.99.100:80 weight=2;server 192.168.99.200:80;}server {.. ..2)重新加载配置并访问,可以看到web1的任务量增加
[root@proxy nginx-1.22.1]# /usr/local/nginx/sbin/nginx -s reload真机浏览器测试http://192.168.99.5,不太明显
可以使用命令行测试
[root@server1 ~]# curl 192.168.99.5
web1
[root@server1 ~]# curl 192.168.99.5
web2
[root@server1 ~]# curl 192.168.99.5
web1
[root@server1 ~]# curl 192.168.99.5
web13)设置健康检查max_fails可以设置后台服务器连不上的失败次数,fail_timeout可以设置后台服务器的失败超时时间,等待多长时间再次尝试连接
[root@proxy nginx-1.22.1]# vim /usr/local/nginx/conf/nginx.conf
...upstream webserver {server 192.168.99.100:80;server 192.168.99.200:80 max_fails=2 fail_timeout=30;}server {...4)重新加载配置并访问
[root@proxy nginx-1.22.1]# /usr/local/nginx/sbin/nginx -s reload测试时,先将web2的httpd服务关闭
[root@web2 ~]# systemctl stop  httpd使用真机命令行访问集群页面curl 192.168.99.5,只会显示web1的页面
[root@server1 ~]# curl 192.168.99.5
web1
[root@server1 ~]# curl 192.168.99.5
web1此时即使将web2的httpd服务开启也无效,因为要等待30秒
[root@web2 ~]# systemctl start  httpd
[root@server1 ~]# curl 192.168.99.5 #30秒之后再访问,web2会出现
web2
4)配置upstream服务器集群的调度算法
测试ip_hash
1)设置相同客户端访问相同Web服务器
[root@proxy nginx-1.22.1]# vim /usr/local/nginx/conf/nginx.conf
...upstream webserver {ip_hash;server 192.168.99.100:80;server 192.168.99.200:80;}server {
...
2)重新加载配置
[root@proxy nginx-1.22.1]# /usr/local/nginx/sbin/nginx -s reload3)测试只会见到一个页面
[root@server1 ~]# curl 192.168.99.5
web1
[root@server1 ~]# curl 192.168.99.5
web1
添加down标记
down标记可以让集群主机暂时不参与集群活动
[root@proxy nginx-1.22.1]# vim /usr/local/nginx/conf/nginx.conf
...upstream webserver {server 192.168.99.100:80;server 192.168.99.200:80 down;}server {...
重新加载配置
[root@proxy nginx-1.22.1]# /usr/local/nginx/sbin/nginx -s reload测试,只会见到web1
[root@server1 ~]# curl 192.168.99.5
web1
[root@server1 ~]# curl 192.168.99.5
web1二、Nginx的TCP/UDP调度器(四层代理)实验要求
使用Nginx实现TCP/UDP调度器功能,实现如下功能: 后端SSH服务器两台Nginx编译安装时需要使用--with-stream,开启ngx_stream_core_module模块Nginx采用轮询的方式调用后端SSH服务器
实验环境
以下机器全部已经存在,无须再次配置主机名	IP地址	角色
server1(已存在)	eth0:192.168.99.254/24	客户端
proxy(已存在)	eth1:192.168.99.5/24	代理服务器
web1(已存在)	eth1:192.168.99.100/24	ssh服务器
web2(已存在)	eth1:192.168.99.200/24	ssh服务器
image-202410082133113331)部署nginx服务
支持4层TCP/UDP代理的Nginx服务器 1)部署nginx服务器
编译安装必须要使用--with-stream参数开启4层代理模块
[root@proxy nginx-1.22.1]# /usr/local/nginx/sbin/nginx -s stop
[root@proxy nginx-1.22.1]# rm -rf /usr/local/nginx/
[root@proxy nginx-1.22.1]# cd /root/lnmp_soft/nginx-1.22.1/
[root@proxy nginx-1.22.1]# yum -y install gcc make pcre-devel openssl-devel
[root@proxy nginx-1.22.1]# ./configure --with-stream                    #开启4层代理功能
[root@proxy nginx-1.22.1]# make && make install
[root@proxy nginx-1.22.1]# /usr/local/nginx/sbin/nginx -V           #查看安装模块情况
nginx version: nginx/1.22.1
built by gcc 8.5.0 20210514 (Red Hat 8.5.0-10) (GCC) 
configure arguments: --with-stream
2)配置Nginx服务
添加服务器池,实现四层代理功能1)修改nginx配置文件[root@proxy nginx-1.22.1]# vim /usr/local/nginx/conf/nginx.conf    #配置写到http的上方即可
...stream {upstream backend {             #创建集群,名称为backendserver 192.168.99.100:22;  #后端SSH服务器IP和端口server 192.168.99.200:22;}server {               #调用集群listen 12345;       #Nginx代理监听的端口,可以自己定义proxy_pass backend; #调用backend集群}}
http {
.. ..
}
2)启动nginx
[root@proxy nginx-1.22.1]# /usr/local/nginx/sbin/nginx 3)客户端使用访问代理服务器测试轮询效果
[root@server1 ~]# ssh 192.168.99.5 -p 12345     #使用该命令多次访问查看轮询效果
[root@web1 ~]# exit
[root@server1 ~]# ssh 192.168.99.5 -p 12345
[root@web2 ~]# 
 
一、Nginx反向代理(七层代理)
 实验要求
 使用Nginx实现Web反向代理功能,实现如下功能: 
     后端Web服务器两台,可以使用httpd实现
     Nginx采用轮询的方式调用后端Web服务器
     两台Web服务器的权重要求设置为不同的值
     最大失败次数为2,失败超时时间为30秒
 实验环境
 以下机器全部已经存在,无须再次配置
主机名    IP地址    角色
 server1(已存在)    eth0:192.168.99.254/24    客户端
 proxy(已存在)    eth1:192.168.99.5/24    代理服务器
 web1(已存在)    eth1:192.168.99.100/24    web服务器
 web2(已存在)    eth1:192.168.99.200/24    web服务器
 image-20241008213058281
1)部署后端Web服务器
 1)部署后端Web1服务器
 后端Web服务器可以简单使用yum方式安装httpd实现Web服务,为了可以看出后端服务器的不同,可以将两台后端服务器的首页文档内容设置为不同的内容
 [root@web1 ~]# yum -y install httpd
 [root@web1 ~]# echo "web1" > /var/www/html/index.html
 [root@web1 ~]# systemctl enable --now httpd
2)部署后端Web2服务器
 [root@web2 ~]# yum -y install  httpd
 [root@web2 ~]# echo "web2" > /var/www/html/index.html
 [root@web2 ~]# systemctl enable --now httpd
3)使用proxy主机测试
 [root@proxy ~]# curl 192.168.99.100
 web1
 [root@proxy ~]# curl 192.168.99.200
 web2
 2)配置Nginx代理服务器
 添加服务器池,实现反向代理功能
之前proxy主机安装的nginx已经改过很多配置,避免实验冲突,先还原proxy主机的nginx,重新安装nginx
 [root@proxy ~]# /usr/local/nginx/sbin/nginx  -s stop    #如果之前没有启动,可以不用执行停止的命令
 [root@proxy ~]# rm -rf /usr/local/nginx/
 [root@proxy ~]# cd /root/lnmp_soft/
 [root@proxy lnmp_soft]# rm -rf nginx-1.22.1
 [root@proxy lnmp_soft]# tar -xf nginx-1.22.1.tar.gz
 [root@proxy lnmp_soft]# cd nginx-1.22.1/
 [root@proxy nginx-1.22.1]# yum -y install gcc make pcre-devel openssl-devel
 [root@proxy nginx-1.22.1]# ./configure 
 [root@proxy nginx-1.22.1]# make && make  install    
1)修改nginx的配置文件
 [root@proxy nginx-1.22.1]# vim /usr/local/nginx/conf/nginx.conf
 ...
 http {
 ...
 #使用upstream定义后端服务器集群,集群名称任意(如webserver)
 #使用server定义集群中的具体服务器和端口
       upstream webserver {
          server 192.168.99.100:80;
          server 192.168.99.200:80;
         }
       server {
           listen       80;
           server_name  localhost;
           
           #charset koi8-r;
           
           #access_log  logs/host.access.log  main;
   
           location / {
               root   html;
               index  index.html index.htm;
               proxy_pass http://webserver;  #通过proxy_pass将用户的请求转发给webserver集群
           }
  ...
  
 2)启动nginx
 [root@proxy nginx-1.22.1]# /usr/local/nginx/sbin/nginx
3)使用真机浏览器做测试192.168.99.5,刷新可以看到网站的轮询效果,出现结果为 web1 或者 web2
 3)配置upstream服务器集群池属性
 1)设置权重
 weight可以设置后台服务器的权重,权重越大任务的分配量就越大
 [root@proxy nginx-1.22.1]# vim /usr/local/nginx/conf/nginx.conf
 .. ..
       upstream webserver {
          server 192.168.99.100:80 weight=2;
          server 192.168.99.200:80;
         }
       server {
  .. ..
2)重新加载配置并访问,可以看到web1的任务量增加
 [root@proxy nginx-1.22.1]# /usr/local/nginx/sbin/nginx -s reload
真机浏览器测试http://192.168.99.5,不太明显
 可以使用命令行测试
 [root@server1 ~]# curl 192.168.99.5
 web1
 [root@server1 ~]# curl 192.168.99.5
 web2
 [root@server1 ~]# curl 192.168.99.5
 web1
 [root@server1 ~]# curl 192.168.99.5
 web1
3)设置健康检查max_fails可以设置后台服务器连不上的失败次数,fail_timeout可以设置后台服务器的失败超时时间,等待多长时间再次尝试连接
 [root@proxy nginx-1.22.1]# vim /usr/local/nginx/conf/nginx.conf
 ...
       upstream webserver {
          server 192.168.99.100:80;
          server 192.168.99.200:80 max_fails=2 fail_timeout=30;
         }
       server {
  ...
4)重新加载配置并访问
 [root@proxy nginx-1.22.1]# /usr/local/nginx/sbin/nginx -s reload
测试时,先将web2的httpd服务关闭
 [root@web2 ~]# systemctl stop  httpd
使用真机命令行访问集群页面curl 192.168.99.5,只会显示web1的页面
 [root@server1 ~]# curl 192.168.99.5
 web1
 [root@server1 ~]# curl 192.168.99.5
 web1
此时即使将web2的httpd服务开启也无效,因为要等待30秒
 [root@web2 ~]# systemctl start  httpd
 [root@server1 ~]# curl 192.168.99.5 #30秒之后再访问,web2会出现
 web2
 4)配置upstream服务器集群的调度算法
 测试ip_hash
 1)设置相同客户端访问相同Web服务器
 [root@proxy nginx-1.22.1]# vim /usr/local/nginx/conf/nginx.conf
 ...
       upstream webserver {
          ip_hash;
          server 192.168.99.100:80;
          server 192.168.99.200:80;
         }
       server {
 ...
 2)重新加载配置
 [root@proxy nginx-1.22.1]# /usr/local/nginx/sbin/nginx -s reload
3)测试只会见到一个页面
 [root@server1 ~]# curl 192.168.99.5
 web1
 [root@server1 ~]# curl 192.168.99.5
 web1
 添加down标记
 down标记可以让集群主机暂时不参与集群活动
 [root@proxy nginx-1.22.1]# vim /usr/local/nginx/conf/nginx.conf
 ...
       upstream webserver {
          server 192.168.99.100:80;
          server 192.168.99.200:80 down;
         }
       server {
  ...
 重新加载配置
 [root@proxy nginx-1.22.1]# /usr/local/nginx/sbin/nginx -s reload
测试,只会见到web1
 [root@server1 ~]# curl 192.168.99.5
 web1
 [root@server1 ~]# curl 192.168.99.5
 web1
二、Nginx的TCP/UDP调度器(四层代理)
 实验要求
 使用Nginx实现TCP/UDP调度器功能,实现如下功能: 
     后端SSH服务器两台
     Nginx编译安装时需要使用--with-stream,开启ngx_stream_core_module模块
     Nginx采用轮询的方式调用后端SSH服务器
 实验环境
 以下机器全部已经存在,无须再次配置
主机名    IP地址    角色
 server1(已存在)    eth0:192.168.99.254/24    客户端
 proxy(已存在)    eth1:192.168.99.5/24    代理服务器
 web1(已存在)    eth1:192.168.99.100/24    ssh服务器
 web2(已存在)    eth1:192.168.99.200/24    ssh服务器
 image-20241008213311333
1)部署nginx服务
 支持4层TCP/UDP代理的Nginx服务器 
1)部署nginx服务器
 编译安装必须要使用--with-stream参数开启4层代理模块
 [root@proxy nginx-1.22.1]# /usr/local/nginx/sbin/nginx -s stop
 [root@proxy nginx-1.22.1]# rm -rf /usr/local/nginx/
 [root@proxy nginx-1.22.1]# cd /root/lnmp_soft/nginx-1.22.1/
 [root@proxy nginx-1.22.1]# yum -y install gcc make pcre-devel openssl-devel
 [root@proxy nginx-1.22.1]# ./configure --with-stream                    #开启4层代理功能
 [root@proxy nginx-1.22.1]# make && make install
 [root@proxy nginx-1.22.1]# /usr/local/nginx/sbin/nginx -V           #查看安装模块情况
 nginx version: nginx/1.22.1
 built by gcc 8.5.0 20210514 (Red Hat 8.5.0-10) (GCC) 
 configure arguments: --with-stream
 2)配置Nginx服务
 添加服务器池,实现四层代理功能
 1)修改nginx配置文件
  [root@proxy nginx-1.22.1]# vim /usr/local/nginx/conf/nginx.conf    #配置写到http的上方即可
 ...
       stream {
         upstream backend {             #创建集群,名称为backend
             server 192.168.99.100:22;  #后端SSH服务器IP和端口
             server 192.168.99.200:22;
           }
          server {               #调用集群
             listen 12345;       #Nginx代理监听的端口,可以自己定义
             proxy_pass backend; #调用backend集群
           }
      }
 http {
 .. ..
 }
 2)启动nginx
 [root@proxy nginx-1.22.1]# /usr/local/nginx/sbin/nginx 
3)客户端使用访问代理服务器测试轮询效果
 [root@server1 ~]# ssh 192.168.99.5 -p 12345     #使用该命令多次访问查看轮询效果
 [root@web1 ~]# exit
 [root@server1 ~]# ssh 192.168.99.5 -p 12345
 [root@web2 ~]#
