Nginx:将子域重新路由到Django

问题描述 投票:0回答:1

如何在Nginx中内部捕获子子网并将其重新路由到Django的URL调度程序?

api.project.org/ -> /api/
www.project.org/ -> /www/
project.org/ -> /www/

我想得到这样的东西:

location api.project.org/ {
    uwsgi_pass 127.0.0.1:8080/api/;
}    

最终用户仍然应该看到这些子域,这与服务器是否返回301和位置如project.org/www/无关。

django nginx uwsgi nginx-config
1个回答
1
投票

对于每个子域,您必须编写一个nginx服务器配置

server {
    server_name api.project.org;

    location / {
        rewrite ^/api/(.*)$ /api/$1 break;
        rewrite ^(.*)$ /api$1 break;
        uwsgi_pass  127.0.0.1:8080;
        include     uwsgi_params;
    }
}

第二个重写前缀/ api /到每个URL,并将其传递给uwsgi脚本。

第一次重写是为了使Django重定向正常工作。因为当您返回HttpResponseRedirect时django不了解您的系统配置,因此您的URL如下所示:

http://api.project.org/api/subdomain

所以当达到这种类型的请求时,我们必须防止将api添加到url的开头。

© www.soinside.com 2019 - 2024. All rights reserved.