在Java企业级应用中,反向代理通常用来分流,或用来代理tomcat等Servlet容器服务。
在本例需求,Nginx反向代理tomcat,代理和服务对客户透明。当客户在浏览器上输入www.hello.com.cn时,请求会发给Nginx,Nginx本身不产生内容,将请求交给tomcat,tomcat影响请求,将数据返回给Nginx,Nginx将数据返回给客户浏览器。
在Nginx中设置反向代理,关键技术upstream,中文叫上游。在upstream配置中指向tomcat服务。然后在server,将location指向代理的tomcat。即完成反向代理。
下面是操作步骤:
1、有tomcat.apache.org网站下载tomcat
解压后双击执行apache-tomcat-8.5.31instartup.bat
在浏览器地址栏输入http://localhost:8080/ 回车,能看到信息执行第二步
2、修改nginx-1.13.12conf ginx.conf
添加两段配置
第一段,在现有的server前添加如下:
server { listen 80; server_name www.hello.com.cn; client_max_body_size 1024M; location / { proxy_pass http://my_server/; proxy_set_header Host $host:$server_port; } }
listen 指定监听端口,默认为80
server_name 域名
client_max_body_size 文件上传的大小
location 设置代理,值为/
proxy_pass 指定上游服务
整段配置是当用户通过浏览器访问www.hello.com.cn:80时,会将请求交给上游处理。
下面是第二段配置,配置上游
upstream my_server { server 127.0.0.1:8080; keepalive 2000; }
upstream 指定上游名称。第一段的配置中proxy_pass的值,即指向这里。两者关联时,名称要一致。
server 将服务指向tomcat,这里没有协议http://,仅有机器IP地址和端口
keepalive 指并发连接数,可以支持2000个并发请求。
到此反向代理请求完成。再启动nginx,在浏览器地址栏输入http://www.hello.com.cn/ 回车,应该可以看到以下内容。