Nginx反向代理传递给分开的Tomcat服务器不通过

这是我在NginX / sites-enabled目录中的文件:

upstream tomcat_server { server 192.168.1.100:8080 fail_timeout=0; } server { listen 80 default_server; listen [::]:80 default_server; server_name _____.com www._____.com; 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://tomcat_server; } } 

现在,stream程如下所示:

  • 我访问我的域名_____.com,请求被映射到我的路由器在端口39080的IP。
  • 在我的路由器中,端口80将端口39080的请求端口转发到192.168.1.136(我的nginx服务器正在运行,单独的机器)。
  • Nginx正在监听端口80并提取请求。

想要做的是将请求redirect到运行在单独机器上的Tomcat服务器,所以我把proxy_pass放到了Tomcat服务器上。

实际发生的事情是请求挂起,屏幕上出现一个空白页面。 Tomcat日志显示对请求的200 OK响应,但是它应该加载其余的内容,包括页面,图像和脚本以及其他内容。

“GET / app-portal / HTTP / 1.0”200

// 而已

[ /app-portal/是我的服务器端代码redirect到]

我可以确认它是nginx的问题,因为当我将路由器端口转发直接转到tomcat服务器而不是nginx时,页面加载了所有的内容。

可能是什么问题呢?

我不知道这是否是一个主要的问题,但我注意到,成功的请求(从我从路由器直接转到tomcat服务器)使用HTTP1.1,而nginx的失败请求使用HTTP1.0

“proxy_pass http:// tomcat_server ;” 看起来很奇怪,那里有http。

build议你尝试删除你的上游,这样做。

 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://192.168.1.100:8080 } 

本文有一个很好的指导。

proxy_pass应该是完整的有效域或IP地址。 proxy_pass http:// tomcat_server ; 是无效的,导致没有在哪里。 如果这是你的tomcat服务器的IP地址192.168.1.100:8080,那么你应该这样做#proxy_pass http://192.168.1.100:8080 ; 然后login到ssh并运行它来testing输出。 wget http://192.168.1.100:8080希望有所帮助