Nginx:将子域重新路由到 Django
Nginx: Reroute Subdomains to 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/;
}
最终用户仍然应该看到那些子域,而不是像服务器 return 301
和 project.org/www/
.
这样的位置
您必须为每个子域编写一个 nginx 服务器配置
server {
server_name api.project.org;
location / {
rewrite ^/api/(.*)$ /api/ break;
rewrite ^(.*)$ /api break;
uwsgi_pass 127.0.0.1:8080;
include uwsgi_params;
}
}
第二次重写将 /api/ 添加到每个 urls 并将其传递给 uwsgi 脚本。
第一次重写是为了让 django 重定向工作。因为当你 return HttpResponseRedirect 你的 URL 时 django 不知道你的系统配置是这样的:
http://api.project.org/api/subdomain
因此我们必须防止在达到此类请求时将 api 添加到 url 的开头。
如何在 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/;
}
最终用户仍然应该看到那些子域,而不是像服务器 return 301
和 project.org/www/
.
您必须为每个子域编写一个 nginx 服务器配置
server {
server_name api.project.org;
location / {
rewrite ^/api/(.*)$ /api/ break;
rewrite ^(.*)$ /api break;
uwsgi_pass 127.0.0.1:8080;
include uwsgi_params;
}
}
第二次重写将 /api/ 添加到每个 urls 并将其传递给 uwsgi 脚本。
第一次重写是为了让 django 重定向工作。因为当你 return HttpResponseRedirect 你的 URL 时 django 不知道你的系统配置是这样的:
http://api.project.org/api/subdomain
因此我们必须防止在达到此类请求时将 api 添加到 url 的开头。