JavaEE进阶——Nginx反向代理负载均衡

Nginx

  • Nginx类似于Apache和Tomcat,也是一种服务器软件。
  • Nginx是一个高性能的HTTP和反向代理服务器,也可以实现负载均衡的功能。
  • 与Tomcat相比,Tomcat是一个Java实现的重量级服务器,而Nginx是一个轻量级服务器。
  • 与Apache相比,Nginx能支持处理百万级的TCP连接,10万以上的并发连接。

Nginx安装

参考JavaEE进阶——CentOS开发环境搭建安装Nginx部分。

Nginx配置文件

在/usr/local/nginx/conf目录下nginx.conf文件是nginx的配置文件。
这里写图片描述

使用Nginx配置虚拟机

1. 通过端口区分虚拟机

在nginx.conf文件中添加一个server节点,修改监听端口号为8080,展示页面文件夹为html8080;

server {
        listen       8080;
        server_name  localhost;

        location / {
            root   html8080;
            index  index.html index.htm;
        }
  }

拷贝一份/usr/local/nginx/下的html文件夹,修改为html8080,并将其中的index.html内容修改,加上8080标记。
这里写图片描述

运行Nginx,重新载入Nginx。

/usr/local/nginx/sbin/nginx -s reload

访问测试:
这里写图片描述
这里写图片描述

2. 通过域名区分虚拟机

利用SwitchHosts软件配置域名与ip绑定:
这里写图片描述

添加基于域名的server节点:

server {
        listen       80;
        server_name  guo.ping.com;

        location / {
            root   html-address;
            index  index.html index.htm;
        }
       }

拷贝一份/usr/local/nginx/下的html文件夹,修改为html-address,并将其中的index.html内容修改,加上address标记。

运行Nginx,重新载入Nginx。

/usr/local/nginx/sbin/nginx -s reload

访问测试:
这里写图片描述
这里写图片描述

如果没有添加基于域名的server节点,访问域名依然解析到最开始的不带任何标记的网页地址。

我们将同一IP地址绑定多个域名,来进一步测试:
这里写图片描述

修改server节点配置信息:

这里写图片描述

访问结果:
这里写图片描述
这里写图片描述

Nginx的反向代理

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

1. 反向代理的模拟

创建多个tomcat服务器:
这里写图片描述

修改每个tomcat运行在不同的端口号上,每个server.xml配置文件需要修改三处端口:
这里写图片描述
这里写图片描述
这里写图片描述

分别配置在8080,8081,8082端口,分别进行启动测试,注意防火墙配置。
这里写图片描述
这里写图片描述
这里写图片描述

配置nginx的配置文件,进行反向代理:

upstream tomcats{
    server 192.168.74.128:8080;
    server 192.168.74.128:8081;
    server 192.168.74.128:8082;
}

server {
    listen       80;
    server_name  test.tomcats.com;

    location / {
        proxy_pass   http://tomcats;
        index  index.html index.htm;
    }
}

不断访问test.tomcats.com域名,发现三台tomcat页面都有出现,比例大致1:1:1:
这里写图片描述
这里写图片描述
这里写图片描述

2. 负载均衡

只需要在upstream的server后面添加一个weight即可代表权重。权重越高,分配请求的数量就越多。默认权重是1。
这里写图片描述

猜你喜欢

转载自blog.csdn.net/bskfnvjtlyzmv867/article/details/80682470