Nginx:将子域重新路由到Django

如何在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/一样。

wxm821016 回答:Nginx:将子域重新路由到Django

对于每个子域,您必须编写一个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重定向正常工作。因为django在返回HttpResponseRedirect时不知道您的系统配置,所以您的URL如下:

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

因此,当达到此类请求时,我们必须防止将api添加到url的开头。

本文链接:https://www.f2er.com/3168981.html

大家都在问