gpt4 book ai didi

django - 两个 gunicorn 应用程序(django 和tilestache)的Nginx conf

转载 作者:行者123 更新时间:2023-12-04 23:26:52 25 4
gpt4 key购买 nike

我正在尝试托管一个站点,该站点由 django 应用程序和由tilestache 提供服务的 map 图块组成。我可以通过使用其中任何一个来让它们分别运行和提供内容

gunicorn_django -b 0.0.0.0:8000 

对于 Django 应用程序,或
gunicorn "TileStache:WSGITileServer('tilestache.cfg')"

用于瓷砖。我试过守护 django 应用程序并在不同的端口 ( 8080 ) 上使用tilestache 进程同时运行它们,但tilestache 不起作用。我认为问题出在我的 nginx conf 中:
server {
listen 80;
server_name localhost;

access_log /opt/django/logs/nginx/vc_access.log;
error_log /opt/django/logs/nginx/vc_error.log;

# no security problem here, since / is alway passed to upstream
root /opt/django/;
# serve directly - analogous for static/staticfiles
location /media/ {
# if asset versioning is used
if ($query_string) {
expires max;
}
}
location /static/ {
# if asset versioning is used
if ($query_string) {
expires max;
}
}
location / {
proxy_pass_header Server;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_connect_timeout 10;
proxy_read_timeout 10;
proxy_pass http://localhost:8000/;
}
# what to serve if upstream is not available or crashes
error_page 500 502 503 504 /media/50x.html;
}

我可以再添加一个 server阻止 proxy_pass http://localhost:8080/ 的 conf ?此外,我对这个堆栈非常陌生(我非常依赖 Adrián Deccico 的教程 here 来启动和运行 django 部分)所以任何“哇,这是一个明显的错误”或建议将不胜感激.

最佳答案

据我所知 - 你已经映射了 location /localhost:8000 .当您有 2 个不同的上游时,您将需要两个不同的位置映射,每个上游一个。
因此,假设 django 应用程序是您域中的主站点,您将拥有现在的默认位置:

location / {
proxy_pass_header Server;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_connect_timeout 10;
proxy_read_timeout 10;
proxy_pass http://localhost:8000/;
}

然后为另一个应用程序添加另一个位置:
location /tilestache {
proxy_pass_header Server;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_connect_timeout 10;
proxy_read_timeout 10;
proxy_pass http://localhost:8080/;
}

这里唯一的区别是端口。这样 domain.com/tilestache 将被 localhost:8080 处理,而所有其他地址将默认为 django 应用程序 localhost:8000 .
放置 location /tilstache之前 location / .

为清楚起见,您可以像这样定义上游:
upstream django_backend  {
server localhost:8000;
}

upstream tilestache_backend {
server localhost:8080;
}

然后在 location部分,使用:
location / {
.....
proxy_pass http://django_backend;
}

location /tilestache {
.....
proxy_pass http://tilestache_backend;
}

关于django - 两个 gunicorn 应用程序(django 和tilestache)的Nginx conf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11516308/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com