springboot with nginx,访问api 404

时间:2017-10-24 07:49:33

标签: java nginx spring-boot

我通过命令java -jar xxx.jar在8080端口启动springboot服务器。当我访问http://localhost:8080/test/redis时,它总是返回正确的数据,如{"a": 1}

但是我在下面设置了nginx代理配置

server {

    #other location config

    location /job/ {
        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://localhost:8080/;
    }
}

当我访问http://localhost/job/test/redis时,nginx直接返回404页面。第二次访问url时,它返回正确的数据。再次404,然后再次正确的数据,依此类推。而http://localhost:8080/test/redis总是很好。

我无法弄明白,为什么会这样。 有人可以提供帮助吗?非常感谢!顺便说一句,如果您需要更多细节,请在评论中告诉我

4 个答案:

答案 0 :(得分:0)

尝试删除/后的最后http://localhost:8080

更新

nginx代理也可能传递完整的url,因此你的api得到的整个/job/test/redis并不存在。在这种情况下,您可能需要使用正则表达式删除job部分,并使用代理传递其余的URL。

答案 1 :(得分:0)

编辑你的nginx配置后,你重新加载nginx吗?

答案 2 :(得分:0)

您是否按nginx -s reload重新加载nginx?

您可以按tail -f <error-log-file>

查看错误消息

您可以粘贴所有配置信息,可能是您的请求与另一条无法找到响应文件的路由匹配

答案 3 :(得分:0)

哦,我发现springboot中tomcat的端口是8080,与我设置的nginx默认端口相同,这引起了一个奇怪的问题。

我将tomcat端口更改为8081后,问题就消失了。