Centos7实现Nginx反向代理和负载均衡

Centos7实现Nginx反向代理和负载均衡

对于平时学习,需要在同一个ip下,多个域名对应多个网站的实现。

实现目标:
通过aaa.test.com域名访问tomcat1服务器下的网站
通过bbb.test.com域名访问tomcat2服务器下的网站

注:这里展示的是在一台虚拟机中实现。

需求:
1)一台centos7虚拟机
2)nginx的安装包(nginx-1.8.0)
3)tomcat安装包(apache-tomcat-7.0.47)

实验说明:
主机名为taotao-nginx(这个名字无所谓啦)
本次实验使用的是一个nginx和两个tomcat来实现的模拟。
其中本虚拟机的IP(相当于公网IP):192.168.121.140
子IP(内网中分配给不同tomcat的IP):192.168.121.141
其中子IP开启了8080端口和8081端口,为别给了tomcat1和tomcat2服务器
(注:也可以用不同内网ip)

一、Nginx反向代理的介绍

反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。

简单来说,nginx实现了,当用多个域名(指向同一个公网IP地址)访问代理服务器的时候,把请求转发给不同内网IP下的tomcat服务器(这里用的是用以内网IP的不同端口8080和8081),来实现不同网站的访问。

Nginx只做请求的转发,后台有多个tomcat服务器提供服务,nginx的功能就是把请求转发给后面的服务器,决定把请求转发给谁。

Centos7实现Nginx反向代理和负载均衡_第1张图片

二、首先绑定一个IP:192.168.121.141

(可以看之前的文章:关于centos7绑定多个IP地址的方法)
显示:[root@taotao-nginx ~]# ip addr
Centos7实现Nginx反向代理和负载均衡_第2张图片

三、Tomcat安装

(tomcat的更新,就放在下次更新吧)

我将tomcat放在了:
[root@taotao-nginx ~]# cd /usr/local/tomcats/
Centos7实现Nginx反向代理和负载均衡_第3张图片

四、更改tomcat配置

1、tomcat1使用的默认的

所有端口用的默认的
其中第一监听端口访问:8080
第二监听端口连接其他服务器:8009

2、Tomcat2的配置

(1)、进入conf文件
[root@taotao-nginx tomcat2]# cd conf/
(2)、用vi编辑器打开server.xml文件

Centos7实现Nginx反向代理和负载均衡_第4张图片
需要修改三处:
①第一处:把8005给成8006
说明:关闭用的
Centos7实现Nginx反向代理和负载均衡_第5张图片
②第二处:把8080改为8081
说明:连接器监听8080端口,负责建立HTTP连接。在通过浏览器访问Tomcat服务器的Web应用时,使用的就是这个连接器。
在这里插入图片描述
③第三处:把8009改为8010
说明:连接器监听8010端口,负责和其他的HTTP服务器建立连接。在把Tomcat与其他HTTP服务器集成时,就需要用到这个连接器。
在这里插入图片描述

(3)、这里并不需要重新加载配置文件,直接启动tomcat即可(特别注意)

在这里插入图片描述

3、测试tomcat2

1)启动tomcat2:
进入tomcat2/bin目录,执行:[root@taotao-nginx bin]# startup.sh
在这里插入图片描述
2)在浏览器中查看:

测试成功,这里发现在:
Centos7实现Nginx反向代理和负载均衡_第6张图片
是-8081,这是因为我改了index.html页面(这就不展开详述了,没多大用,不改也行)
Centos7实现Nginx反向代理和负载均衡_第7张图片

五、安装和配置nginx

1、首先,是上传nginx安装包

这里我用的是crt软件,连接的虚拟机,利用rz命令上传的

2、找到nginx.1.8.0.tar.gz,并解压

我解压到了 /export/servers里边(这个任意即可)
在这里插入图片描述

3、启动nginx

在这里插入图片描述

执行:
[root@taotao-nginx sbin]# ./nginx 启动
注:
这里要注意,我在重启后发现启动出错:
在这里插入图片描述
最后发现/var/run/下边并没有nginx文件夹,自行创建,再次启动nginx即可成功。

4、测试访问:

Centos7实现Nginx反向代理和负载均衡_第8张图片

5、把不同域名和主机ip做映射

目标:当我们访问8080.itheima.com和访问8081.itheima.com的时候都可以访问到nginx成功页面

(1)、修改hosts文件:

Centos7实现Nginx反向代理和负载均衡_第9张图片
添加
在这里插入图片描述

(2)、修改nginx.conf配置文件

添加两个虚拟机和tomcatserver1和tomcatserver2。
外部通过域名访问虚拟机,nginx实现跳转,跳转到对应的tomcatserver服务器。
Centos7实现Nginx反向代理和负载均衡_第10张图片
重新加载nginx.conf文件:
首先关闭nginx

[root@taotao-nginx sbin]# ./nginx -s stop

然后再加载

[root@taotao-nginx sbin]# ./nginx -c /usr/local/nginx/conf/nginx.conf
(3)、测试nginx

在网页中访问8080.itheima.com和8081.ietheima.com
Centos7实现Nginx反向代理和负载均衡_第11张图片
Centos7实现Nginx反向代理和负载均衡_第12张图片
这样就完成啦,成功实现在仅有一个“公网”IP(192.168.121.140)的情况下,通过不同域名访问不同的tomcat网站。

六、负载均衡的配置

首先我们看一下,配置参数详解:

在http节点里添加:

#定义负载均衡设备的 Ip及设备状态 
upstream tomcatserver {   

    server 192.168.121.141:9090 down; 
    server 192.168.121.141:8080 weight=2; 
    server 192.168.121.141:8081 weight=1; 
    server 192.168.121.141:7070 backup; 
}

在需要使用负载的Server节点下添加

proxy_pass http://tomcatserver;

upstream 每个设备的状态:

属性 说明
down 表示单前的server暂时不参与负载
weight 默认为1.weight越大,负载的权重就越大
max_fails 允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误
fail_timeout:max_fails 几次失败后,暂停的时间
backup 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻

配置好后重新加载nginx.conf配置文件即可:
首先关闭nginx

[root@taotao-nginx sbin]# ./nginx -s stop

然后再加载

[root@taotao-nginx sbin]# ./nginx -c /usr/local/nginx/conf/nginx.conf

再次启动即可:

[root@taotao-nginx sbin]# ./nginx

你可能感兴趣的:(nginx学习,nginx,linux,java,tomcat,网络)