1. 首先来说一下什么是nginx 反向代理?
nginx是由俄罗斯创建的一款http代理服务器及反向代理服务器,简单来说就是部署前段以及 分发客户端请求的服务器,
2.为什么需要配置nginx反向代理?
首先来讲一下业务需求,现在公司的前后端分别部署在nginx,Tomcat,部署在同一台服务器,开放了2个端口用于外部访问.
如果外网中开放2个端口,那么就没有办法对tomcat资源进行屏蔽的作用,由此想到nginx的反向代理具备代理转发请求的功能,
将tomcat作为局域网访问,隔绝外部访问,提高安全性,外部访问tomcat服务器 必须通过代理服务器nginx。
目前的访问页面流程--》
web客户端 ----》(访问)----》NIGNX服务器 --》(返回html页面信息)--》web客户端
html页面信息--》访问---》Tomcat服务器--》返回响应消息 --》html页面填充信息
需要改造的流程--》html页面信息 --->访问nginx请求地址---》nginx负责代理请求--》将其转发给内部网络中的tomcat服务器--》由nginx负责响应的信息
3.了解nginx的作用,以及具体的业务需求,只要将nginx的配置结合具体情况使用就好了
首先tomcat的部署地址为:http://127.0.0.1:8080 也就是部署在本地的8080端口,nginx部署在7000端口,
配置文件中我们只需要关注的是location这部分,location 后面的 /pv_webT 也就是说针对请求地址包含7000的请求都进行代理转发处理,proxy_pass 后面跟着的也就是局域网中的tomcat地址,将原来访问https://localhost:7000/pv_webT类似请求的地址 转发给http://localhost:8000 地址下的tomcat服务器 ,由此也就实现了nginx反向代理tomcat请求的功能
4.上面只是 做到了nginx反向代理,实际测试中发现 nginx转发请求 给tomcat时间太长了, 通过网上查找资料 ,找到解决方案
在proxy_pass后面 加上如下代码
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 50m;
client_body_buffer_size 256k;
proxy_connect_timeout 1;
proxy_send_timeout 30;
proxy_read_timeout 60;
proxy_buffer_size 256k;
proxy_buffers 4 256k;
proxy_busy_buffers_size 256k;
proxy_temp_file_write_size 256k;
proxy_next_upstream error timeout invalid_header http_500 http_503 http_404;
proxy_max_temp_file_size 128m;
测试后,响应速度跟以前的一样,参考资料https://blog.csdn.net/zhousenshan/article/details/50763113
修改后的代码