Nginx反向代理配置问题

时间:2018-02-18 18:46:47

标签: tomcat nginx

我在数字海洋水滴上的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,有人可以指导我。

1 个答案:

答案 0 :(得分:1)

您需要在将请求传递给代理服务器时设置主机标头,否则nginx将使用变量$proxy_host覆盖Host标头,在本例中为127.0.0.1:8080,您需要它是server.foodini.co.in:8080。所以只需将其添加到location /块:

proxy_set_header Host $host:$proxy_port;