如何解决nginx无法成功转发请求到tomcat9.0.14上? 5C

后端框架springboot2.1.2,不经过转发,postman直接发送请求到tomcat上,可以成功返回response,说明后端部署是没问题的。经过nginx转发,错误日志里显示连接超时,tomcat上也没有日志,说明根本没连上。但是看了nginx的日志,转发的URL是对的。

还有一个很奇怪的点是,用springboot的IDE(STS3.9.6)使用内置的tomcat测试的时候,当时是可以转发成功的。。。。映射的一模一样的URL。实在搞不懂问题出在哪

nginx相关配置(公司内网的东西,手打了部分):

upstream TESTGETTOKEN
{
    server 109.32.13.12:8080;
}

server
{
    listen 0.0.0.0:80;
    server_name nginx-test.com;
    server_name_in_redirect off;

    location /Test/Product/GetToken
{
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $host:$server_port;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_redirect off;
    client_max_body_size 10m;
    proxy_pass http://TESTGETTOKEN/Iden/Test/GetToken/;
}

后端URL: http://109.32.13.12:8080/Iden/Test/GetToken/ , postman测试能连通

nginx error.log日志

upstream timed out (110: Connection timed out) while connecting to upsteam, client :109.32.13.12, server:nginx-test.com,request: " POST /Test/Product/GetToken HTTP/1.1", upstream: "http://109.32.13.12:8080/Iden/Test/GetToken/", host: "109.32.13.80"

4个回答

用了ssl协议么?用了非标端口么?ngnix和tomcat是部署在不同的计算机上么?它们本身通不通。
配置文件是怎么写的

chenrui38
chenrui38 没用SSL。 nginx端口80,Tomcat8080 , 部署在公司内网的不同计算机上, 本身都能被连通。 配置文件更新上了,老哥看一下。
6 个月之前 回复

给出你nginx配置文件、日志才能更好的看下能不能帮助你

ouyangxuehui1983
pitt1007 proxy_pass http://TESTGETTOKEN/Iden/Test/GetToken/ 你upstream 配的不是这个路径,没对应上
4 个月之前 回复
chenrui38
chenrui38 发出来了 老哥看下
6 个月之前 回复

nginx配置的location试试加上 ^~ ,例如
location ^~ /Test/Product/GetToken
{
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_redirect off;
client_max_body_size 10m;
proxy_pass http://TESTGETTOKEN/Iden/Test/GetToken/;
}

proxy_pass http://TESTGETTOKEN/Iden/Test/GetToken/ 你upstream 配的不是这个路径,没对应上

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问