• 四、Nginx实例配置(反向代理、负载均衡、动静分离、主从备份)


    一、Nginx配置实例之反向代理

    实例一:

    目的:在浏览器中输入地址www.123.com,跳转到Linux系统Tomcat主页面中

    访问的过程:

    步骤:
          1、在Linux中安装Nginx,具体步骤参考上面

          2、在Linux中安装Tomcat服务器,使用默认端口号8080

                (1)将Tomcat放到Linux系统中

                (2)执行:tar -xvf apache-tomcat-8.5.58.tar.gz解压Tomcat压缩包

                (3)进入Tomcat的bin目录,执行./startup.sh,启动Tomcat

                (4)防火墙开放8080端口:执行

    sudo firewall-cmd --add-port=8080/tcp --permanent
    firewall-cmd --reload
    

          3、具体配置

               1、修改Windows系统的hosts文件中,配置域名ip映射

                    文件地址:C:WindowsSystem32driversetc

                    添加:192.169.40.129 www.123.com

               2、在nginx中进行请求转发的配置(反向代理配置)

                    1、修改/user/local/nginx/conf/nginx.conf文件,添加如下配置

                    2、退出并保存nginx.conf文件,进入/usr/local/nginx/sbin下执行:./nginx -s reload命令重新启动nginx

                    3、浏览器中输入:www.123.com

    实例二:

    目的:
          使用nginx反向代理,根据访问的路径跳转到不同的端口的服务中。nginx监听端口为9001。

          访问:http://127.0.0.1:9001/edu/ 直接跳转到127.0.0.1:8081
          访问http://127.0.0.1:9001/vod/ 直接跳转到127.0.0.1:8082

    步骤:

          1、准备tomcat

                在/usr/src文件夹下创建两个文件夹tomcat8081和tomcat8082,并分别放入tomcat软件,修改server.xml中的端口后启动tomcat。在防火墙中添加开放端口8081、8082、9001

          2、创建测试页面

                在tomcat8081下的tomcat的webapps文件夹中创建文件夹中创建edu文件夹,并放入a.html文件
                在tomcat8082下的tomcat的webapps文件夹中创建文件夹中创建vod文件夹,并放入a.html文件

          3、配置反向代理

    (1)找到nginx的配置文件nginx.conf,在http块中添加一个新的server{}块

    (2)浏览器输入地址测试:

    备注:location指令说明

    location [ = | ~ | ~* | ^~] uri {
    	
    }
    
    # 1、=:用于不含正则表达式的uri前,要求请求字符串与uri严格匹配,如果匹配成功,就停止继续向下搜索并立即处理请求。
    # 2、~:用于表示uri包含正则表达式,并且区分大小写。
    # 3、~*:用于表示uri包含正则表达式,并且不区分大小写
    # 4、^~:用于不含正则表达式的uri前,要求nginx服务器找到标识uri和请求字符串匹配度最高的location后,立即使用此location处理请求,而不再使用location块中的正则uri和请求字符串做匹配。
    # 5、uri如果包含正则表达式,则必须要有~或者~*标识。
    

    二、Nginx配置实例之负载均衡

    目的:
          浏览器地址栏输入地址:http://192.168.40.129:9001/edu/a.html,负载均衡效果,平均8081和8082端口中

    准备工作:
          1、准备两台tomcat服务器,一台8081,一台8082

          2、在两台tomcat里面的webapps目录中,创建名称是edu文件夹,在edu文件夹中创建页面a.html,用于测试

          3、在nginx的配置文件中的http块中进行负载均衡配置

          4、在谷歌浏览器中进行测试,谷歌浏览器需要回车才能有效果

    负载均衡:
          即是将负载分摊到不同的服务单元,既保证服务的可用性,又保证响应足够快,给用户很好的体验。nginx提供了以下几种分配方式(策略)。

          1、轮询(默认)
                每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。

          2、weight
                weight代表权重。默认为1,权重越高被分配的客户端越多。如:

          3、ip_hash
                每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。如:
    客户端A第一次访问被分配的服务器ip为192.168.5.21:80,则此客户端下一次访问被分配的服务器地址还是它。

          4、fair(第三方)
                按后端服务器的响应时间来分配请求,响应时间短的先分配,如:


    三、Nginx配置实例之动静分离

          nginx动静分离简单来说就是把动态请求和静态请求分开,但不能理解成只是单纯的把动态页面和静态页面物理分离。严格意义上来说应该是动态请求和静态请求分开,可以理解成使用nginx处理静态页面,Tomcat处理动态页面。目前实现分为两种:
          一:把静态文件独立成单独的域名,放在独立的服务器上,也是目前主流推崇的方案。
          二:动态文件和静态文件一起发布,通过nginx分开。通过location指定不同的后缀名实现不同的请求转发。

          通过expires参数设置,可以时浏览器缓存过期时间,减少与服务器之间的请求和流量。具体Expires定义:是给一个资源设定一个过期时间,也就是说无需服务端验证,直接通过浏览器自身确认是否过期即可,所以不会产生额外的流量,此种方式非常适合不经常变动的资源。如果经常更新的文件,不建议使用Expires来缓存。如设置3d,表示在3天之内访问这个URL,发送一个请求,比对服务器该文件最后更新时间没有变化,则不会从服务器抓取,返回状态码304,如果有修改,则直接从服务器重新下载,返回状态码200.

    准备工作:
          1、在linux根目录创建data文件夹,然后在此文件夹中创建image文件夹和www文件夹。image文件夹中放入1.jpg图片,www文件夹中创建a.html文件

          2、在nginx的配置文件中进行配置

          3、测试
                (1)浏览器中输入:http://192.168.40.129/image/1.jpg

                (2)浏览器中输入:http://192.168.40.129/www/a.html


    四、Nginx配置实例之主从备份

    单击版nginx配置存在问题:如果nginx服务宕机,系统将不可使用

    高可用之主从备份方案
          当发送请求时,如果主nginx服务器宕机,则将请求转发到备份服务器处理请求。通过keepalived来进行检测服务器是否正常,如果不正常,则进行切换到备份服务器。主服务器和备用服务器需要提供一个虚拟ip,将这个虚拟ip绑定到两台服务器中,外部请求实际访问的是对外提供的虚拟ip

    准备工作:
    (1)需要两台nginx服务器,在两台服务器上都安装nginx软件
    (2)需要在两台服务器上都安装keepalived
    (3)需要虚拟ip

    步骤:
    (1)准备两台服务器192.168.40.129和192.168.40.130,分别在上面安装nginx软件并启动,安装步骤参考上面

    (2)分别在两台服务器上安装keepalived
          执行:yum intasll keepalived -y
          执行:rpm -q -a keepalived 查看是否安装成功

    keepalived安装文件路径:/etc/keepalived/keepalived.conf

    (3)完成高可用配置

          以192.168.40.130服务器为主服务器进行配置

          (1)修改keepalived.conf文件如下:

    ! Configuration File for keepalived
    
    # 全局定义
    global_defs {
       notification_email {
         acassen@firewall.loc
         failover@firewall.loc
         sysadmin@firewall.loc
       }
       notification_email_from Alexandre.Cassen@firewall.loc
       smtp_server 192.168.40.130 # 服务器地址
       smtp_connect_timeout 30
       router_id LVS_DEVEL
       # vrrp_skip_check_adv_addr
       # vrrp_strict
       # vrrp_garp_interval 0
       # vrrp_gna_interval 0
    }
    
    # 检测脚本
    vrrp_script chk_http_port{
    	script "/usr/local/src/nginx_check.sh" # 检测脚本文件路径
    	interval 2	# 检测脚本的执行间隔
    	weight 2
    }
    
    vrrp_instance VI_1 {
        state MASTER	# 备份服务器上将MASTER改为BACKUP
        interface ens33	# 网卡
        virtual_router_id 51	# 主、备机的virtual_router_id必须相同
        priority 100	# 主、备机取不同的优先级,主机值较大,备份机值较小
        advert_int 1	
        authentication {
            auth_type PASS
            auth_pass 1111
        }
        virtual_ipaddress {
            192.168.40.50	# 对外提供的虚拟IP地址
        }
    }
    

          (2)创建脚本文件nginx_check.sh,并将其放置在/usr/local/src/路径下,脚本文件如下:

    #!/bin/bash
    A=`ps -C nginx –no-header |wc -l`
    if [ $A -eq 0 ];then
        /usr/local/nginx/sbin/nginx
        sleep 2
        if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
            killall keepalived
        fi
    fi
    

          (3)启动keepalived:systemctl start keepalived.service
                   查看是否启动:ps -ef |grep keepalived

          (4)在/usr/local/nginx/sbin下启动nginx:./nginx

                以192.168.40.129服务器为从服务器进行配置

                (1)修改keepalived.conf文件如下:

    ! Configuration File for keepalived
    
    # 全局定义
    global_defs {
       notification_email {
         acassen@firewall.loc
         failover@firewall.loc
         sysadmin@firewall.loc
       }
       notification_email_from Alexandre.Cassen@firewall.loc
       smtp_server 192.168.40.129 # 服务器地址
       smtp_connect_timeout 30
       router_id LVS_DEVEL
       # vrrp_skip_check_adv_addr
       # vrrp_strict
       # vrrp_garp_interval 0
       # vrrp_gna_interval 0
    }
    
    # 检测脚本
    vrrp_script chk_http_port{
    	script "/usr/local/src/nginx_check.sh" # 检测脚本文件路径
    	interval 2	# 检测脚本的执行间隔
    	weight 2
    }
    
    vrrp_instance VI_1 {
        state BACKUP	# 备份服务器上将MASTER改为BACKUP
        interface ens33	# 网卡
        virtual_router_id 51	# 主、备机的virtual_router_id必须相同
        priority 50	# 主、备机取不同的优先级,主机值较大,备份机值较小
        advert_int 1	
        authentication {
            auth_type PASS
            auth_pass 1111
        }
        virtual_ipaddress {
            192.168.40.50	# 对外提供的虚拟IP地址
        }
    }
    

                (2)创建脚本文件nginx_check.sh,并将其放置在/usr/local/src/路径下,脚本文件如下:

    #!/bin/bash
    A=`ps -C nginx –no-header |wc -l`
    if [ $A -eq 0 ];then
        /usr/local/nginx/sbin/nginx
        sleep 2
        if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
            killall keepalived
        fi
    fi
    

                (3)启动keepalived:systemctl start keepalived.service
                         查看是否启动:ps -ef |grep keepalived

                (4)在/usr/local/nginx/sbin下启动nginx:./nginx

    测试:
    (1)访问虚拟ip地址:192.168.40.50

    (2)在主服务器执行ip a命令查看

    (3)此时执行:

           ./nginx -s stop停掉nginx
           systemctl stop keepalived.service停掉keepalived

           再次访问虚拟地址:192.168.40.50

           此时再次在主服务器执行ip a命令进行查看,此时主服务器已经解除虚拟ip绑定,从服务器添加了虚拟ip绑定

           至此,nginx高可用集群已经部署完成

  • 相关阅读:
    java实现字符串和LIST,MAP转换
    JAVA发送HttpClient请求及接收请求结果
    JVM内存溢出分析
    tomcat启动问题 严重: End event threw exception
    解决oracle11G密码过期问题
    查看和开启服务器端口
    tongweb安装后无法启动问题
    intellij与eclipse默认快捷键对比
    java实现pdf按页切分成图片
    ORACLE在IMP时候出现数据丢失
  • 原文地址:https://www.cnblogs.com/giswhw/p/15215099.html
Copyright © 2020-2023  润新知