nginx的配置实例:反向代理、负载均衡、动静分离、keepalived主从配置

一、反向代理示例1

1.实现效果

打开浏览器,在浏览器中访问www.678.com,跳转到linux系统的服务器上tomcat主页面中;

2.准备工作

2.1 在linux中安装tomcat、启动tomcat;

#前提:linux有java环境,检查java,如果没有就百度一下安装
java -version

#下载 apache-tomcat-7.0.105.tar.gz放在/usr/src目录
#解压:
tar -zxvf apache-tomcat-7.0.105.tar.gz

#进入apache-tomcat-7.0.105/bin:
cd apache-tomcat-7.0.105/bin

#执行startup.sh
[root@localhost bin]# ./startup.sh 

#启动tomcat后查看日志:apache-tomcat-7.0.105/logs/catalina.out
cd apache-tomcat-7.0.105/logs/
tail -f catalina.out

2.2 对外开放访问的端口,例子:8080端口(原因tomcat中conf/server.xml中默认端口8080,可以自己任意修改)

sudo firewall-cmd --add-port=8080/tcp --permanent
#重新防火墙:
firewall-cmd --reload

2.3 结果:上面步骤做完之后,在你windows上使用浏览器访问linux的ip:8080(如:http:192.xxx.0.95:8080)就会进入tomcat的主页;

3.访问过程分析

nginx的配置实例:反向代理、负载均衡、动静分离、keepalived主从配置_第1张图片

4.具体配置实现

步骤1:在hosts文件(C:\Windows\System32\drivers\etc)中添加域名与ip的映射

完成第一步后,可以实现通过www.678.com:8080访问tomcat的主页(这里都还没有涉及nginx)

步骤2:在nginx中做反向代理配置:nginx目录下conf文件的nginx.conf

nginx的配置实例:反向代理、负载均衡、动静分离、keepalived主从配置_第2张图片

二、反向代理示例2

1.实现效果

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

如:

访问 http://www.678.com:9001/edu/ 直接跳转到192.168.201.128:8080的tomcat的webapps页面

访问 http://www.678.com:9001/vod/ 直接跳转到192.168.201.128:8081的tomcat的webapps页面

2.准备工作

2.1 准备两个tomcat,一个端口为8080;一个端口为8081;教程访问:tomcat多开webapps

2.2 准备两个html(如:a.html;b.html)文件分别放在tomcat/webapps/edu/  和tomcat/webapps1/vod/中,当然edu,和vod两个文件夹自己在对应的webapps中创建;(备注:这里创建在webapps中的文件在浏览器url中是有体现的;)

3.具体配置

3.1 在nginx中做反向代理配置:nginx目录下conf文件的nginx.conf

nginx的配置实例:反向代理、负载均衡、动静分离、keepalived主从配置_第3张图片

实现效果:不同路径,结果不同;

nginx的配置实例:反向代理、负载均衡、动静分离、keepalived主从配置_第4张图片

nginx的配置实例:反向代理、负载均衡、动静分离、keepalived主从配置_第5张图片

4、关于nginx.conf配置的符合说明

nginx的配置实例:反向代理、负载均衡、动静分离、keepalived主从配置_第6张图片

三、负载均衡示例

1. 实现效果

1.1 相继在浏览器地址栏输入地址http://192.168.201.128/edu/a.html,负载均衡效果,平均分配到8080、8085端口中;

2. 准备工作

2.1 安装两个tomcat服务器,配置好,一个默认端口8080;一个默认端口8085;他们的webapps中都创建一个edu文件夹,为了看到访问同样的路径,结果不同,将文件夹里面放不同内容的a.html文件;

3. 具体配置

nginx的配置实例:反向代理、负载均衡、动静分离、keepalived主从配置_第7张图片

4.结果:访问http://192.168.201.128/edu/a.html,这一链接,实则是不同端口(8080,8085)在服务;(在tomcat的webapps中放置名称相同但里面内容不同的html就可以在浏览器中看到不同的结果;)

nginx的配置实例:反向代理、负载均衡、动静分离、keepalived主从配置_第8张图片

nginx的配置实例:反向代理、负载均衡、动静分离、keepalived主从配置_第9张图片

4.nginx负载均衡的策略

第一种  轮询(默认)

如果在运行中,某一台服务器down掉,nginx会自动剔除;

第二种  weight

即:权重;在nginx.conf中配置upstream时,加上每个ip:port的weight值;

nginx的配置实例:反向代理、负载均衡、动静分离、keepalived主从配置_第10张图片

第三种  ip_hash;

每个请求按访问者的ip的hash结果分配,这样每个访客访问一个后端服务器,可以解决session问题。具体配置方式:

nginx的配置实例:反向代理、负载均衡、动静分离、keepalived主从配置_第11张图片

第四种  fair;

按照后端服务器的响应时间来分配请求,响应时间短的优先分配;(注意:nginx负载均衡fair模块安装和配置)具体配置方式:

四、动静分离

主流方式:纯粹把静态文件独立成单独的域名,放在独立的服务器上,也是目前主流推崇的方案;

nginx的配置实例:反向代理、负载均衡、动静分离、keepalived主从配置_第12张图片

4.1 动静分离示例

4.1.1 准备工作:在根目录下创建data目录,里面准备两个静态内容,如下:

nginx的配置实例:反向代理、负载均衡、动静分离、keepalived主从配置_第13张图片

4.1.2 实现效果:通过nginx实现对静态资源的访问;【注意:这里是使用nginx,和tomcat没关系】

nginx的配置实例:反向代理、负载均衡、动静分离、keepalived主从配置_第14张图片

效果:autoindex  on的作用:列出目录的资源

nginx的配置实例:反向代理、负载均衡、动静分离、keepalived主从配置_第15张图片

nginx的配置实例:反向代理、负载均衡、动静分离、keepalived主从配置_第16张图片

五、nginx宕机了?怎么办?Keepalived+Nginx高可用集群(主从模式)解决

效果:当主nginx服务器挂掉了,会启用备用nginx;

需要资源:两台nginx服务器、需要keepalived、需要虚拟ip;

nginx的配置实例:反向代理、负载均衡、动静分离、keepalived主从配置_第17张图片

准备工作:

1.两台服务器(虚拟机代替)192.168.201.128  192.168.201.129

2.两台服务器都安装上nginx

3.安装keepalived

#在usr目录下
yum install keepalived -y
#检查是否安装
rpm -q -a keepalived

4.安装之后,在etc里面生成目录keepalived,有文件keepalived.conf

配置:(主从配置)

#配置keepalived.conf;在/etc/keepalived/目录下
cd /etc/keepalived/
#vim keepalived.conf
#使用下面的,覆盖原文件内容;下面的内容请根据备注进行主从服务器的区别设置;

global_defs {

    notifcation email {
        [email protected]
        [email protected]
        [email protected]
    }

    notification_email_from [email protected]
    smtp_server 192.168.201.128  
    // 路由访问到主机,router_i后面跟的是etc/hosts文件中配置的:127.0.0.1 ithing中的ithing
    router_id ithing   
}

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  //网卡:使用ifconfig,ip所在的哪一项
    virtual_router_id 51  //主、备机的virtual_router_id必须相同
    priority 90  //主、备机取不同的优先级,主机值较大,备份机值较小;
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.201.50 //vrrp H虚拟地址
    }
}

在/usr/local/src/nginx_check.sh的检查脚本的内容:

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

分别启动两台服务器的nginx、keepalived;

#在nginx的/sbin/目录下
#启动nginx
./nginx
#同样在该目录下,启动keepalived
systemctl start keepalived.service

结果:

nginx的配置实例:反向代理、负载均衡、动静分离、keepalived主从配置_第18张图片

你可能感兴趣的:(Nginx)