gpt4 book ai didi

django - 多个带有 nginx proxy_pass 的 django 应用程序并重写

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

我有一个名为 myapp 的 django-admin 应用程序我想在不同的物理设备上部署多个实例,每个客户一个。但是,我希望它们都可以从类似的域中访问,mydomain.com/customer1/myapp .

我已经摆弄了特定的代理设置并尝试了 SO 上建议的多种方法,但没有一个非常适合我的用例......而且因为我对这两者知之甚少 nginxdjango我很茫然!

我目前的 nginx.conf 是:

server {
listen 80;
server_name myserver.com

location ^~ /static {
alias /path/to/static/files/;
}
# location / {
# proxy_pass http://127.0.0.1:8001;
# }
location ^~ /customer1/myapp/static {
alias /path/to/static/files/;
}
location /customer1/myapp {
rewrite ^/customer1/myapp/(/?)(.*) /$2 break;
proxy_pass http://127.0.0.1:8001;
}
}

我可以通过 myserver.com/customer1/myapp/admin 按预期进入登录屏幕.但是,当我尝试登录时,nginx 将我的 url 重写为 myserver.com/admin这不是有效的网址。如何防止 nginx 实际重写 url 并且只更改传递给 127.0.0.1:8001 的 url ?

FWIW,我正在使用 gunicorn 服务于 gunicorn -b 127.0.0.1:8001 -n myapp .如果我取消注释 /位置并删除最后两个位置块,该应用程序运行良好。

如果有其他选择,我远非采用这种方法。目标是避免为每个部署修改 django 代码,而只是为新部署向 nginx.conf 添加最少的代码。

最佳答案

基本上,您将 url 指定为 proxy_pass 指令的一部分,以下位置指令应该这样做:

location ~ ^/customer1/myapp(/?)(.*) {
proxy_pass http://127.0.0.1:8001/$2;
}

http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass有关nginx如何传递uri的详细说明

关于django - 多个带有 nginx proxy_pass 的 django 应用程序并重写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12360791/

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