【发布时间】:2012-10-12 10:54:18
【问题描述】:
我有几个 Flask 应用程序在 Nginx 反向代理后面运行。 URL 以 /demo/pipeline 开头的所有请求都转到侦听端口 7001 的 Flask 实例。我正在设置 X-Script-Name 标头,以便我的 Flask 后端可以根据 http://flask.pocoo.org/snippets/35/ 处理此根 URL。这让后端代码生成相对于 /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 反向代理,代码需要继续工作。
【问题讨论】:
标签: javascript python nginx coffeescript flask