Nginx: перенаправить поддомен в Django - PullRequest
0 голосов
/ 04 ноября 2019

Как перехватить и перенаправить субдомены внутренне в Nginx на диспетчер URL Django?

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/.

1 Ответ

1 голос
/ 04 ноября 2019

для каждого субдомена вы должны записать конфигурацию сервера 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;
    }
}

для каждого URL-адреса переписать prepend / api / и передать его в скрипт uwsgi.

для первого перезаписиДжанго перенаправляет на работу. потому что django не знает о конфигурации вашей системы, когда вы возвращаете HttpResponseRedirect, ваш URL выглядит следующим образом:

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

, поэтому мы должны запретить добавлять api в начало url, когда достигнут этот тип запроса.

...