【发布时间】:2013-09-15 04:11:15
【问题描述】:
具体来说,我认为我需要 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/,然后只剩下1.0,它也需要它。
现在,我将使用 Nginx 代理多个服务器,每个服务器都托管一个应用程序。由于前面提到的内部路由,Django 应用程序需要(至少)接收/1.0 的 URI,而另一个(在 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 中有一个非消耗位置。如果我知道如何用更简单的术语来表达这一点,我会的。我想要的可能吗?
【问题讨论】:
-
简单的答案,使用 gunicorn。问题解决了。
-
我目前使用 Nginx 作为 Gunicorn 的代理服务器。你能说得更具体点吗?
-
我以为我在切换哪个应用程序位于“/”位置时找到了答案。但是症状(需要加倍 URI,例如
/api/1.0/api/1.0来访问资源)只是出现在 2.0 版本中。 -
同时,我在应用程序上看到另一个错误,即“502 Bad Gateway”错误,不在位置“/”下。我想知道这两者是否相关。
标签: django nginx routing uri tastypie