【问题标题】:Nginx: Reroute Subdomains to DjangoNginx:将子域重新路由到 Django
【发布时间】:2020-02-29 10:04:59
【问题描述】:

如何在 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/ 的位置。

【问题讨论】:

  • 你可以使用重写
  • @vorujack 但我如何使用rewrite 来做到这一点?

标签: django nginx uwsgi nginx-config


【解决方案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的开头。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-09
    • 2020-10-27
    • 1970-01-01
    • 1970-01-01
    • 2015-10-08
    • 2021-04-14
    • 2018-10-22
    • 1970-01-01
    相关资源
    最近更新 更多