nginx 反向代理_Nginx配置IP反向代理集群

nginx作为一款高性能的服务器,可以做正向,反向代理服务器等,平时我用到最多的就是反向代理服务器,做负载均衡等。详细请参考官方文档:https://www.nginx.cn/doc/。

首先去官方文档下载与系统对应的版本,官方地址:http://nginx.org/en/download.html。

c5994c62879b8ea7963ee96637ad0059.png

我之前下载的1.16.1版本,下载解压,可看到exe可执行文件,以及conf配置目录。

f5c92a3b27cf7feafa6928e14adc3196.png

打开配置目录,找到核心配置文件nginx.conf.编辑配置。

22c875e11abd24b235bd1f702333add7.png

下面是我的配置,主要配置如下,可根据实际情况,我这里把服务单位写到一个配置文件,然后引入就行,比较清晰,也可以直接在这个里面配置,可参考配置中注释的例子。这是在http模块配置

upstream tomcat.test1 {

server localhost:8080;

}

upstream tomcat.test2 {

server localhost:8081;

}

c5be3ae0b22d5259867d10dfbe15db1d.png

这是官方给的例子,安全的和非安全的。

37034dc84c94461fe1363626d078caf9.png

include sinog2c.conf; 这个是server模块的配置,解耦出来了。下面是我配置的,代理的地址就是需要和配置的upstream 一致。

dc8354008f5e759963a6ef2504bfe362.png

配置完成后,可以启动nginx进行测试

进入nginx目录,可以通过start nginx.exe 或.\nginx.exe启动nginx.

66b601e0837a1dbe4810b4d3bb754bdb.png

启动 8080端口的tomcat,每个tomcat部署着自己的应用

0e231da68b5da19c73e75547007699df.png

再启动8081的tomcat

f73ba9b72e6d81966dcf8719a504266a.png

在tomcat根目录写一个简单的页面,用做测试。

731eb724bb8630d523596bb859dcdf10.png

getport.jsp简单的一行代码,来测试

9af538c09645286eae09ef1640ebc5c5.png

tomcat启动成功后,直接访问端口8080的,如下:

6780ff092435c857f2e4f7b459980c97.png

访问8081tomcat,如下:

51355a81ec35bcd8c18291e1b34f1e62.png

2个tomcat都可以单独访问,说明应用没有问题,单机的应用这样就算okb ,下面就来验证nginx反向代理。

我修改了访问路径之后,没有访问8080和8081,而是访问nginx配置的80端口,也可以访问到。

ec31bd4072ca90f114bd33586fc40911.png

根据返回的结果,可以看出走的是这个代理

d9382dbec022feb89bb8b4f31b457aa1.png

再把这个代理修改一下,验证下

78508ba63974cb08061217c0ec582a42.png

nginx -t  验证nginx配置是否正常

nginx -s reload 重新加载一下配置,立即生效。

ef7c9302999cbe519b0b1e4ea9e040c2.png

修改之后,再访问同样的url,已经跳转到8081这台应用上了。

281287c142774fc4d74be8c962a6411b.png

下面接着验证一下自定义路径的,也就是下图这个。

8dad7ad4111fe9afb9904d72170fcb2e.png

再加上配置的路径访问之后,出现404,然后分析了一下,肯定是路径出问题了。

74a2344d62d34f1d54c341e5880c9de2.png

出现这种情况是nginx的访问路径与真实的tomcat访问路径不一致,导致路径找不到。加上下面这个rewrite重写一下就可以了。

e2edf73a54d1b8545f09cfef9afa1326.png

cdbc9b0ec641a81aa395a34c0c7afa4a.png

再通过ip去访问一下,验证一下是否正常

73041f63f7f6559f54b0ef39a9b50861.png

可以看到已经按照自己定义的方式去跳转应用了,也是基本上实现了反向代理。接着添加负载均衡的配置,如下:

44d11265c200e2439b8b5955a1b9cf96.png

这里我测试的是权重,以下是官方的几种负载均衡策略。根据具体的场景配置具体方案。

轮询默认方式
weight权重方式
ip_hash依据ip分配方式
least_conn最少连接方式
fair(第三方)响应时间方式
url_hash(第三方)依据URL分配方式

最后再看一下我们的访问日志:

2e3c01c69a4f1b172ec37b531cac3fc9.png

为什么tomcat部署之后就可以直接访问了,还要依赖nginx? tomcat默认的http请求一般是在2000左右,最大线程数150,nginx的一般连接数30000,对于高并发请求,tomcat服务器是没办法完成的。nginx为什么可以抗这么大请求,这就涉及到底层原理,原理这个慢慢深入研究吧,事件驱动模型。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值