首先去官方文档下载与系统对应的版本,官方地址:http://nginx.org/en/download.html。
我之前下载的1.16.1版本,下载解压,可看到exe可执行文件,以及conf配置目录。
打开配置目录,找到核心配置文件nginx.conf.编辑配置。
下面是我的配置,主要配置如下,可根据实际情况,我这里把服务单位写到一个配置文件,然后引入就行,比较清晰,也可以直接在这个里面配置,可参考配置中注释的例子。这是在http模块配置upstream tomcat.test1 {
server localhost:8080;
}
upstream tomcat.test2 {
server localhost:8081;
}
这是官方给的例子,安全的和非安全的。
include sinog2c.conf; 这个是server模块的配置,解耦出来了。下面是我配置的,代理的地址就是需要和配置的upstream 一致。
配置完成后,可以启动nginx进行测试
进入nginx目录,可以通过start nginx.exe 或.\nginx.exe启动nginx.
启动 8080端口的tomcat,每个tomcat部署着自己的应用
再启动8081的tomcat
在tomcat根目录写一个简单的页面,用做测试。
getport.jsp简单的一行代码,来测试
tomcat启动成功后,直接访问端口8080的,如下:
访问8081tomcat,如下:
2个tomcat都可以单独访问,说明应用没有问题,单机的应用这样就算okb ,下面就来验证nginx反向代理。
我修改了访问路径之后,没有访问8080和8081,而是访问nginx配置的80端口,也可以访问到。
根据返回的结果,可以看出走的是这个代理
再把这个代理修改一下,验证下
nginx -t 验证nginx配置是否正常
nginx -s reload 重新加载一下配置,立即生效。
修改之后,再访问同样的url,已经跳转到8081这台应用上了。
下面接着验证一下自定义路径的,也就是下图这个。
再加上配置的路径访问之后,出现404,然后分析了一下,肯定是路径出问题了。
出现这种情况是nginx的访问路径与真实的tomcat访问路径不一致,导致路径找不到。加上下面这个rewrite重写一下就可以了。
再通过ip去访问一下,验证一下是否正常
可以看到已经按照自己定义的方式去跳转应用了,也是基本上实现了反向代理。接着添加负载均衡的配置,如下:
这里我测试的是权重,以下是官方的几种负载均衡策略。根据具体的场景配置具体方案。
轮询 | 默认方式 |
weight | 权重方式 |
ip_hash | 依据ip分配方式 |
least_conn | 最少连接方式 |
fair(第三方) | 响应时间方式 |
url_hash(第三方) | 依据URL分配方式 |
最后再看一下我们的访问日志:
为什么tomcat部署之后就可以直接访问了,还要依赖nginx? tomcat默认的http请求一般是在2000左右,最大线程数150,nginx的一般连接数30000,对于高并发请求,tomcat服务器是没办法完成的。nginx为什么可以抗这么大请求,这就涉及到底层原理,原理这个慢慢深入研究吧,事件驱动模型。