Nginx: несколько проектов Django с корнем проекта? - PullRequest
3 голосов
/ 23 декабря 2011

Обычно я использую чероки. Из-за некоторых критических проблем с последней версией Chrome мне пришлось временно сменить свой производительный сервер на nginx.

В настоящее время пытаюсь заставить мою конфигурацию работать так же, как и в чероки. Я использую очень простой обработчик uwsgi:

    location /project1 {
            include uwsgi_params;
            uwsgi_pass localhost:3032;
    }

Работает нормально, проект доступен на myurl.com/project1. Но django берет myurl.com в качестве корня проекта.

Пример того, как я хочу, чтобы это работало: Несколько проектов на одном поддомене: проект1 в / проект1, проект2 в / проект2 и т. Д.

Правило регулярных выражений Django «^ $» должно работать с каждым проектом, например:

В Project1: ^ $ -> / project1

В Project2: ^ $ -> / project2 и т. Д.

Есть ли способ заставить это работать в nginx?

Приветствия

1 Ответ

1 голос
/ 23 декабря 2011

nginx не устанавливает SCRIPT_NAME автоматически в качестве чероки.

Вы можете заставить его с помощью

uwsgi_param SCRIPT_NAME / project1;

Затем вам нужно переписать PATH_INFO, uWSGI может сделать это автоматически для вас, установив

uwsgi_modifier1 30

Итак, полный конфиг nginx:

 location /project1 {

        include uwsgi_params;
        uwsgi_param SCRIPT_NAME /project1;
        uwsgi_modifier1 30;
        uwsgi_pass localhost:3032;
}

Другой подход заключается в выполнении всей работы в uWSGI, передавая --manage-script-name в качестве опции и оставляя конфигурацию nginx без изменений.

...