我在数字海洋水滴上的tomcat上部署了一个webapp
war文件的结构是(Servelet是webapp名称)
Servelet
---- WEB-INF/classes/folder/FileXyz.class
现在在我的本地电脑上,当我想访问这个时,我会这样做:
localhost:8080/Servelet/FileXyz
我在数字海洋上的tomcat上部署了相同的战争,但这次连接的域名:server.foodini.co.in
现在我可以使用以下方式访问同一个文件:
server.foodini.co.in:8080/Servelet/FileXyz
这很好用。
现在我想在前面有一个nginx,它会监听80端口并通过反向代理将所有请求转发到tomcat webapp
我编辑了/ etc / nginx / sites-available下的默认文件 在服务器配置下,我补充说:
server_name server.foodini.co.in
root /opt/tomcat/webapps/Servelet
location / {
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:8080/;
}
现在我做的时候
server.foodini.co.in
按预期打开tomcat默认页面
但是
server.foodini.co.in/Servelet/FileXyz
(adding the port 8080 again works)
为所有其他路径提供404和相同的404,有人可以指导我。
答案 0 :(得分:1)
您需要在将请求传递给代理服务器时设置主机标头,否则nginx将使用变量$proxy_host覆盖Host标头,在本例中为127.0.0.1:8080
,您需要它是server.foodini.co.in:8080
。所以只需将其添加到location /
块:
proxy_set_header Host $host:$proxy_port;