具体来说,我认为我需要 Nginx 不消耗(捕获?)我用来路由位置的 URI 的一部分。但我不知道这样的事情是否可能。
让我备份。我正在转换我的应用程序的设置。之前,我有一个 Nginx 配置文件,其中包含一个与所有内容匹配的位置块:
server {
listen 80;
server_name ec2-54-234-175-21.compute-1.amazonaws.com;
location / {
...
proxy_pass http://localhost:8000/;
}
通过这个设置,到目前为止,我一直在运行一个 Django 应用程序。在 Nginx 将用户路由到唯一的端点后,Django 使用整个 URI。这意味着,在内部,Django 砍掉了/api/
,然后只是 has 1.0
,它也需要。
现在,我将使用 Nginx 代理多个服务器,每个服务器托管一个应用程序。由于前面提到的内部路由,Django 应用程序需要(至少)接收一个 URI /1.0
,而另一个(在 Flask 上)需要获取/api/2.0
. 但是,为了让 Nginx 位置指令有意义,我必须区分这两个应用程序。我已经解决的是,我将只有以下两个位置指令:
server {
listen 80;
server_name ec2-54-234-175-21.compute-1.amazonaws.com;
location /api/[1.0] {
...
proxy_pass http://localhost:8000/;
}
location / {
...
proxy_pass http://localhost:8080/;
}
但是,请注意括号中的 [1.0]。如果存在,我意识到为了实际访问预期的资源,我必须输入 /api/1.0/1.0 的 URI。所以,不知何故,我需要在我的 nginx conf 中有一个非消耗位置。如果我知道如何用更简单的术语来表达这一点,我会的。我想要的可能吗?