我需要将 Nginx 配置为 Tomcat 的反向代理。问题是,当我尝试通过子域 (myapp.domain.com) 访问 Web 应用程序时,在这种情况下显示的是 Tomcat webapps 根目录,而不是 myapp。
Nginx 配置
server {
listen 80;
root /usr/share/tomcat/webapps/myapp;
index index.php index.html index.htm;
access_log off;
server_name myapp.domain.com;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_pass http://127.0.0.1:8181;
}
}
我尝试在 Tomcat 的 server.xml 中的 Host 标签内添加此行:
<Context path="" docBase="myapp" debug="0" reloadable="true" />
但这样,myapp 就成了默认的,并且“总是”加载,即使尝试访问 webapps 根目录
答案1
如果我正确理解了您的问题,您需要考虑 Tomcat 如何解释“Host”标头,为此配置虚拟主机(请参阅https://tomcat.apache.org/tomcat-6.0-doc/virtual-hosting-howto.html)。
或者,在 server.xml 中不要有 Context 标签,并将 proxy_pass 更改为: