这是我在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程如下所示:
我想要做的是将请求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希望有所帮助