我已经在数字海洋飞沫的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/

10-14 19:43
查看更多