【发布时间】:2019-07-16 02:01:46
【问题描述】:
我的 nginx 配置如下:
server {
listen 80;
server_name bla;
location /api {
include uwsgi_params;
uwsgi_read_timeout 600;
uwsgi_pass unix:/var/www/html/site.sock;
}
location / {
root /var/www/html;
try_files $uri $uri/ /index.html;
}
}
基本上我有一个 Vue 前端和一个 Flask/uWSGI 后端。所有后端请求 (/api) 都包含在第一个位置规则中。所有的前端请求都被第二个覆盖了。效果很好。
我想要做的是对少数没有前缀 api/ 的路由有一个例外,它们被转发到后端而不是前端。
例如,我希望能够将/this-is-an-api-request 发送到后端,而不是转发到 index.html。我不能使用重定向,因为有一些 POST 请求并且我无法成功重定向这些请求。
【问题讨论】:
-
您是否尝试过简单地将 api 位置块与其他路径复制? location /this-is-an-api-request { 与 api 位置块内容相同 }
-
POST 请求可以使用
return 307重定向。是否有足够的特殊 URI 来证明使用map是合理的? -
307 重定向由于某种原因无法正常工作。对于该路线的每种类型的请求,我一直在获取不允许的方法。 @mjb2kmn 的解决方案奏效了。
标签: nginx redirect server webserver url-redirection