吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1089|回复: 5
收起左侧

[求助] nginx代{过}{滤}理去前缀遇到问题

[复制链接]
thepoy 发表于 2020-4-8 13:00

我用的是uwsgi,前后端分离,后端所有的url都是api,于是想在nginx中加一个api的location:

                location ^~/api/ {
                        include /etc/nginx/uwsgi_params;

                        rewrite ^/api/(.*)$ /$1 break;  # 想去掉api

                        # 从uwsgi获取响应的超时时间,默认是60s
                        uwsgi_read_timeout 900s;
                        # 连接到uwsgi的超时时间
                        uwsgi_connect_timeout 75s;
                        # 向uwsgi传输请求的超时时间
                        uwsgi_send_timeout 600s;
                        uwsgi_pass      http://127.0.0.1:5000;
                        uwsgi_ignore_client_abort on;
                }
    }

nginx里加上了api,但uwsgi里的url并没有api,于是想着用rewrite重写url,但不知为什么不生效,依然访问的是/api/xxx,一直报404。
是哪里的问题呢?

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

wei125483 发表于 2020-4-8 13:45
[JavaScript] 纯文本查看 复制代码
location /apis/ {
            proxy_pass  http://127.0.0.1:5000;
            rewrite ^/apis/(.*)$ /$1 break;
        }

location  后面正则不用^试试
 楼主| thepoy 发表于 2020-4-8 14:25
wei125483 发表于 2020-4-8 13:45
[mw_shl_code=javascript,true]location /apis/ {
            proxy_pass  http://127.0.0.1:5000;
     ...

image.png
还是没用,你用proxy有效吗
高永献 发表于 2020-4-8 20:24
你的问题是在你的后台django或者flask等的url规则,前面加上api,例如访问xxx.com ,你原来的url规则本来是“/” ,现在改成“/api/”,而且不需要rewrite。
高永献 发表于 2020-4-8 20:25
这个问题我之前就是这么解决的,我觉得你能明白我的意思
 楼主| thepoy 发表于 2020-4-9 19:06
高永献 发表于 2020-4-8 20:25
这个问题我之前就是这么解决的,我觉得你能明白我的意思

谢谢回复,这个办法是我最初用的,后来想到能不能去前缀完成。现在我也完成了去前缀,不过不是在nginx,而是在uwsgi配置文件里。
[Asm] 纯文本查看 复制代码
[uwsgi]
...
mount= /api=manage.py
manage-script-name = true

目的是将/api这个前缀挂载为希望的app,uwsgi就自动完成后续的加前缀,又不影响已写好的项目。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-26 18:26

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表