我有几个 Flask 应用程序在 Nginx 反向代理后面运行。URL 以 /demo/pipeline 开头的所有请求都转到侦听端口 7001 的 Flask 实例。我正在设置 X-Script-Name 标头,以便我的 Flask 后端可以根据http://flask.pocoo处理此根 URL .org/snippets/35/。这让后端代码生成相对于 /demo/pipeline 根目录的 url。例如 /demo/pipeline/static/utils.js。
这是我的 Nginx 配置的一部分,它将请求路由到 /demo/pipeline 应用程序:
server {
listen 80;
server_name localhost;
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_set_header X-Scheme $scheme;
location / {
proxy_set_header X-Script-Name /;
proxy_pass http://localhost:7000;
}
location /demo/pipeline/ {
proxy_set_header X-Script-Name /demo/pipeline;
rewrite ^/demo/pipeline/(.*) /$1 break;
proxy_pass http://localhost:7001;
}
...
}
现在我如何在客户端考虑根 URL?以我的一个 jQuery AJAX 调用为例:
$.ajax
type: 'PUT'
url: '/subreddit/update'
data: name: @subreddit
error: -> $(elem)?.text val
如何让这个请求转到 /demo/pipeline/subreddit/update 而不是 /subreddit/update?我不想硬编码字符串“/demo/pipeline”,因为如果我更改路由名称或删除 Nginx 反向代理,代码需要继续工作。