我已经在数字海洋飞沫的tomcat上部署了一个webapp
war文件的结构为(Servelet是webapp名称)
Servelet
---- WEB-INF/classes/folder/FileXyz.class
现在在我的本地PC上,当我想访问它时,我会执行以下操作:
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,有人可以指导我吗?
最佳答案
在将请求传递到代理服务器时,您需要设置主机头,否则nginx将使用变量$proxy_host覆盖主机头,在这种情况下,该头将为127.0.0.1:8080
,而您希望它为server.foodini.co.in:8080
。因此,只需将其添加到location /
块中:
proxy_set_header Host $host:$proxy_port;
关于tomcat - Nginx反向代理配置问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48855317/