1、发现问题
测试服务器在VPN内,没有域名,每次部署新的服务需要申请开放端口,流程比较繁琐,且记住每个服务的端口是比较困难的。
2、解决思路
设置每个服务专属的请求路径,使用nginx转发请求到指定的服务中。
1)nginx中配置多个服务。
2)tomcat配置文件service.xml中修改contextPath
注意:location后的字符必须与contextPath保持一致
例:服务器中部署了两个服务:办公系统和人力资源系统,将两个系统的contextPath设置为oa和hr,此处使用的方法是在Tomcat的server.xml配置文件中修改;nginx中配置拦截oa的请求到8066端口的服务中,拦截hr的请求到8068服务中。
3、部分配置文件源代码
1)Nginx配置文件-【nginx.conf】
server {
listen 80;
server_name localhost;
location /oa/ {
proxy_pass http://localhost:8066/oa/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
location /hr/ {
proxy_pass http://localhost:8068/hr/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
2)Tomcat配置-【server.xml】
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
<!--添加本行代码-->
<Context path="oa" docBase="ROOT" debug="0" reloadable="true"/>
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
参考文件: