《Centos-7.2下使用 Nginx-1.9.9 实现虚拟主机的几种解决方案》
安装 Nginx
《 Centos-7.2 下 Nginx-1.9.9 安装图文详解 》
一、关于 Nginx 的反向代理;
通常的代理服务器,只用于代理内部网络对 Internet 的连接请求,客户机必须指定代理服务器,并将本来要直接发送到Web服务器上的http请求发送到代理服务器中由代理服务器向Internet
上的web服务器发起请求,最终达到客户机上网的目的。
而反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,
此时代理服务器对外就表现为一个反向代理服务器。
如下图:
Nginx 作反向代理服务器只做请求的转发,后台有多个http服务器提供服务,nginx的功能就是把请求转发给后面的服务器,决定把请求转发给谁。
二、Nginx + Tomcat 实现反向代理
在通常情况下,实现反向代理,至少需要两个 tomcat 服务器和一个 nginx 反向代理服务器,
nginx 服务器:192.168.69.101
tomcat1 服务器:192.168.69.102
tomcat2 服务器:192.168.69.103
如下图:
由于硬件设施的限制,那么在这儿一个虚拟机上创建三个tomcat实例,模拟多个服务器,和实际生产环境大致相同。
通过访问不同的域名访问运行在不同端口的tomcat,配置内容如下图:
www.8080.com访问运行 8080 端口的 tomcat 服务器;
www.8081.com访问运行 8081 端口的 tomcat 服务器;
www.8082.com访问运行 8082 端口的 tomcat 服务器;
这儿给个工具比较使用的工具,SwitchHosts ! 是一个管理、切换多个 hosts 方案的工具。它是一个免费开源软件。
下载地址:http://download.csdn.net/download/hello_world_qwp/10268575
谢谢支持!!!
下载完成后,以管理员身份安装和运行,如果安装 360 杀毒软件的可能标识为病毒,手动授权即可正常使用!
在本地 Host 文件中进行配置,如下图:
配置 Nginx 的反向代理,输入命令 “ vi vi conf/nginx.conf ” ,键入内容如下:
upstream tomcat_001 {
server 192.168.78.141:8080;
}
upstream tomcat_002 {
server 192.168.78.141:8081;
}
upstream tomcat_003 {
server 192.168.78.141:8082;
}
server {
listen 80;
server_name www.8080.com;
location / {
proxy_pass http://tomcat_001;
index index.html index.htm;
}
}
server {
listen 80;
server_name www.8081.com;
location / {
proxy_pass http://tomcat_002;
index index.html index.htm;
}
}
server {
listen 80;
server_name www.8082.com;
location / {
proxy_pass http://tomcat_003;
index index.html index.htm;
}
}
测试反向代理,请求访问 www.8080.com 域名通过 nginx 代理访问 tomcat_001,如下图:
测试反向代理,请求访问 www.8081.com 域名通过 nginx 代理访问 tomcat_002,如下图:
测试反向代理,请求访问 www.8082.com 域名通过 nginx 代理访问 tomcat_003,如下图:
三、关于 Nginx 负载均衡
负载均衡是建立在现有网络结构之上的,它提供了一种廉价的有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。
负载均衡,英文名称为Load Balance,其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。
当一台服务器的单位时间内的访问量越大时,服务器压力就越大,大到超过自身承受能力时,服务器就会崩溃。为了避免服务器崩溃,让用户有更好的体验,我们通过负载均衡的方式来分担服务器压力。
我们可以建立很多很多服务器,组成一个服务器负载均衡系统,当用户访问网站时,先访问一个中间服务器,在让这个中间服务器在服务器负载均衡系统中选择一个压力较小的服务器,然后将该访问请求引入该服务器。如此以来,用户的每次访问,都会保证服务器负载均衡系统中的每个服务器压力趋于平衡,分担了服务器压力,避免了服务器崩溃的情况。
负载均衡是用反向代理的原理实现的。
结论:
正向代理 -> 代理的是用户。
反向代理 -> 代理的是服务器。
四、Nginx + Tomcat 实现负载均衡
Nginx 实现反向代理的结构图,如下:
根据上图所示的需求在 nginx.conf 文件中配置负载均衡,内容如下:
upstream tomcat_pool {
server 192.168.78.141:8080;
server 192.168.78.141:8081;
server 192.168.78.141:8082;
}
server {
listen 80;
server_name www.baity.com;
location / {
proxy_pass http://tomcat_pool;
index index.html index.htm;
}
}
在本地 Host 文件中进行配置,如下图:
测试 Nginx + Tomcat 的负载均衡,注意观察端口变化情况,如下图:
在这儿就只测试轮询(默认不跟参数)了,在实际的生产环境中,可以根据使用情况进行参数的配置和调整。
关于负载均衡的各种实用方式
1、轮询(默认)
每个请求顺序分配到不同的 Tomcat 服务器,如果其中某台服务器宕机,则该服务器不再参与轮询。
upstream tomcat_pool {
server 192.168.78.141:8080;
server 192.168.78.141:8081;
server 192.168.78.141:8082;
}
upstream tomcat_pool {
server 192.168.78.141:8080 weight=3;
server 192.168.78.141:8081 weight=2;
server 192.168.78.141:8082 weight=1;
}
upstream tomcat_pool {
server 192.168.78.141:8080;
server 192.168.78.141:8081;
server 192.168.78.141:8082;
fair;
}
upstream tomcat_pool {
ip_hash;
server 192.168.78.141:8080;
server 192.168.78.141:8081;
server 192.168.78.141:8082;
}
upstream tomcat_pool {
server 192.168.78.141:8080;
server 192.168.78.141:8081;
server 192.168.78.141:8082;
hash $request_uri;
hash_method crc32;
}