nginx通配符 / 无法将路由转发到服务器端口

发布于 2022-09-13 00:21:47 字数 1891 浏览 27 评论 0

server {
        listen 443 ssl;
        server_name www.xxx.xxx.pro;
        ssl_certificate cert/5862364_www.xxx.xxx.pro.pem;
        ssl_certificate_key cert/5862364_www.xxx.xxx.pro.key;
        ssl_session_timeout 5m;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #表示使用的TLS协议的类型。
        ssl_prefer_server_ciphers on;
        location / {
                proxy_pass http://127.0.0.1:14856/;
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_redirect off;
                try_files $uri $uri/ =404;
        }
}

nginx是这样配置的,拿其中一个get接口请求为例:www.xxx.xxx.pro/todo/find,返回404,而我用curl http://127.0.0.1:14856/todo/find在服务器上请求是有返回的。
并且我将proxy_pass http://127.0.0.1:14856/改成proxy_pass http://127.0.0.1:14856/todo/find,前端直接用www.xxx.xxx.pro访问到了/todo/find这个接口。
我自己理解的应该是nginx把我所有的请求都请求到http://127.0.0.1:14856上了,后面并没有路由,所以才会404的,我现在整个服务只提供接口,所以用通配符 / 应该没毛病吧?求大神支招!
【补充】以上前端请求都是用的https
【补充】尝试使用

rewrite ^/api/(.*?) /$1 break;
proxy_pass http://127.0.0.1:14856;

也是一样,不同的是404是这样返回的:
image.png
而之前的404是这样的:
image.png
【补充】日志:
image.png
【补充】查看error.log发现问题在哪了,但是不知道问题产生的原因:
image.png

【解决】
猜测的原因是location中的try_files $uri $uri/ =404;这个配置把我的请求当成访问静态资源了,所以才会出现错误日志中的情况,注释掉之后接口可以正常访问了。
也只是猜测,有明白的大佬可以指点一二。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

下壹個目標 2022-09-20 00:21:48

listen 443

是不是前端没写 https 请求到 80 了?

吝吻 2022-09-20 00:21:48

你把 proxy_pass http://127.0.0.1:14856/; 最后那个 / 去掉试试。
改成 proxy_pass http://127.0.0.1:14856;

nginx 之 proxy_pass详解 【简书】

木槿暧夏七纪年 2022-09-20 00:21:48

http://nginx.org/en/docs/http...

proxy_pass 指令后带pathinfo和不带pathinfo处理方式不同. 试着把/去掉看看

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文