【Nginx-反向代理服务器】实践篇(三)之Tomcat+Nginx搭建集群
继前面的博客,本篇博客来实践操作体会一下
Nginx配置过程如下:
(1)到Nginx官网下载Nginx的Windows版本:点击打开链接(这里我们使用nginx/Windows-1.4.7版本进行实验)
(2)解压到磁盘任意目录,例如这里我解压到虚拟机1中:C:\software\nginx-1.4.7
(3)启动、停止和重新加载服务:通过cmd以守护进程方式启动nginx.exe:start nginx.exe,停止服务:nginx-s stop,重新加载配置:nginx -s reload;
修改Nginx核心配置文件nginx.conf
(1)进程数与每个进程的最大连接数:
•nginx进程数,建议设置为等于CPU总核心数
•单个进程最大连接数,那么该服务器的最大连接数=连接数*进程数
(2)Nginx的基本配置:
•监听端口一般都为http端口:80;
•域名可以有多个,用空格隔开:例如 server_name www.sohu.com baidu.com;
(3)负载均衡列表基本配置:
•location/ {}:对什么样的后缀进行负载均衡请求,假如我们要对所有的aspx后缀的文件进行负载均衡时,可以这样写:location ~ .*\.aspx$ {}
•proxy_pass:请求转向自定义的服务器列表,这里我们将请求都转向标识为http://netitcast.com;的负载均衡服务器列表;
•在负载均衡服务器列表的配置中,weight是权重,可以根据机器配置定义权重(如果某台服务器的硬件配置十分好,可以处理更多的请求,那么可以为其设置一个比较高的weight;而有一台的服务器的硬件配置比较差,那么可以将前一台的weight配置为weight=2,后一台差的配置为weight=1)。weigth参数表示权值,权值越高被分配到的几率越大;
以上仅仅是nginx的基础配置
测试说明:
分别向两台虚拟机中的tomcat服务器中部署hjy.war这个web项目(为了以示访问的是不同的web服务器,我们的两台虚拟机中部署的hjy这个项目在页面显示上略有不同),虚拟机1中,页面显示test1,虚拟机2中页面显示test2
注:1,254是虚拟机1,配置的权重为2,
2,nginx部署到254这台机子上了
启动nginx,并启动两台虚拟机的tomcat
运行结果:
访问nginx:http://localhost/hjy/test.jsp
由于权重的不同,在我们不断刷新页面的过程中,显示test1的可能性会大一些
扩展:添加Nginx对于静态文件的缓存配置
为了提高响应速度,减轻真实服务器的负载,对于静态资源我们可以在反向代理服务器中进行缓存,这也是反向代理服务器的一个重要的作用。
(1)缓存静态资源之图片文件
root/nginx-1.4.7/staticresources/image:对于配置中提到的jpg/png等文件均定为到/nginx-1.4.7/staticresources/image文件夹中进行寻找匹配并将文件返回;
expires7d:过期时效为7天,静态文件不怎么更新,过期时效可以设大一点,如果频繁更新,则可以设置得小一点;
tips:下面的样式、脚本缓存配置同这里一样,只是定位的文件夹不一样而已,不再赘述。
(2)缓存静态资源之样式文件
(3)缓存静态资源之脚本文件
(4)在nginx服务文件夹中创建静态资源文件夹,并要缓存的静态文件拷贝进去:这里我主要将Web程序中用到的image、css以及js文件拷贝了进去;
(5)总结:通过配置静态文件的缓存设置,对于这些静态文件的请求可以直接从反向代理服务器中直接返回,而无需再将这些静态资源请求转发到具体的Web服务器进行处理了,可以提高响应速度,减轻真实Web服务器的负载压力。
总结:
本文中我们使用Nginx在Windows环境下搭建了一个反向代理服务,并模拟了一个Tomcat服务器集群的负载均衡效果。从这个demo中,我们可以简单地感受到反向代理为我们所做的事情,并体会负载均衡是怎么一回事。
附:
每次以cmd方式启动Nginx服务不符合实际要求,于是我们想到将其注册为Windows服务,并设置为自动启动模式。这里,我们使用一个不错的小程序:“WindowsService Wrapper”,将nginx.exe注册为Windows服务,具体的步骤如下:
①下载最新版的 Windows Service Wrapper 程序,比如我下载的名称是 “winsw-1.8-bin.exe”(本文底部有下载地址),然后把它命名成你想要的名字(比如:“nginx-service.exe”,当然,你也可以不改名)
②将重命名后的 nginx-service.exe 复制到 nginx 的安装目录(比如,我这里是 “D:\Servers\nginx-1.4.7″)
③在同一个目录下创建一个Windows Service Wrapper 的XML配置文件,名称必须与第一步重命名时使用的名称一致(比如我这里是 “nginx-service.xml”, 如果,你没有重命名,则应该是 “winsw-1.8-bin.xml”),这个XML的内容如下:
- <?xmlversionxmlversion="1.0" encoding="UTF-8"?>
- <service>
- <id>nginx</id>
- <name>Nginx Service</name>
- <description>High Performance NginxService</description>
- <executable>D:\Servers\nginx-1.4.7\nginx.exe</executable>
- <logpath>D:\Servers\nginx-1.4.7\</logpath>
- <logmode>roll</logmode>
- <depend></depend>
- <startargument>-p D:\Servers\nginx-1.4.7</startargument>
- <stopargument>-p D:\Servers\nginx-1.4.7 -sstop</stopargument>
- </service>
④在命令行下执行以下命令,以便将其注册成Windows服务:nginx-service.exe install
⑤接下来就可以在Windows服务列表看到Nginx服务了,这里我们可以将其设置为自动启动了:
(5)总结:在Windows环境中,要对外提供的Windows服务一般都要将其启动类型设置为自动。