nginx代{过}{滤}理去前缀遇到问题
我用的是uwsgi,前后端分离,后端所有的url都是api,于是想在nginx中加一个api的location:```conf
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。
是哪里的问题呢? location /apis/ {
proxy_passhttp://127.0.0.1:5000;
rewrite ^/apis/(.*)$ /$1 break;
}
location后面正则不用^试试 wei125483 发表于 2020-4-8 13:45
location /apis/ {
proxy_passhttp://127.0.0.1:5000;
...
还是没用,你用proxy有效吗 你的问题是在你的后台django或者flask等的url规则,前面加上api,例如访问xxx.com ,你原来的url规则本来是“/” ,现在改成“/api/”,而且不需要rewrite。 这个问题我之前就是这么解决的,我觉得你能明白我的意思 高永献 发表于 2020-4-8 20:25
这个问题我之前就是这么解决的,我觉得你能明白我的意思
谢谢回复,这个办法是我最初用的,后来想到能不能去前缀完成。现在我也完成了去前缀,不过不是在nginx,而是在uwsgi配置文件里。
...
mount= /api=manage.py
manage-script-name = true
目的是将/api这个前缀挂载为希望的app,uwsgi就自动完成后续的加前缀,又不影响已写好的项目。
页:
[1]