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。