• Nginx功能展示实验


    Nginx功能展示实验

    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

    节点间的关系如图所示。

    实验过程

    1. 先准备后端两台Web服务器

    1. 在webserver1上通过不同的端口部署三个虚拟主机,其中一个使用ssl方式,并提供默认访问页。配置如下:
    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";
    }
    
    1. 在webserver2上部署一个虚拟主机并提供默认访问页,方法同上

    在实际生产环境中,两台web服务器提供的内容必须一致,本实验为了演示效果,故意将两台服务器的web页面不同,以示区别。

    1. 在Nginx服务器上设置sorry server 页面。

    2. 部署Nginx的反代和负载均衡功能

    要求:代理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;
        }
    }
    

    3. 整体试验结果验证

    for ((i=1;i<=5;i++)); do curl http://172.16.50.2;done

    当down掉一台web服务器时,仅有另一台提供web服务

    当两台web服务器都down掉时,会显示sorry server页面。

  • 相关阅读:
    在购物过程中的购买用请求重定向不用转发的原因
    自己在WEB学习过程中遇到的问题
    WEB应用中普通java代码如何读取资源文件
    [课堂总结]C++课堂总结(二)
    [一些问题] ubuntu 18.04下 配置qt opencv的坑
    [学习笔记] Ubuntu下编译C++ OpenCV程序并运行
    [学习笔记] cv2.Canny 边缘检测
    [C++讨论课] 课堂记录(一)
    [R] 简单笔记(一)
    Appium入门示例(Java)
  • 原文地址:https://www.cnblogs.com/lijian-22huxiaoshan/p/7368188.html
Copyright © 2020-2023  润新知