Назад | Перейти на главную страницу

Nginx удаляет базовый URL

Я пытаюсь настроить Django через UWSGI с помощью Nginx.

У меня есть пропуск UWSGI для работы с этой функцией

                location / {
                        include        uwsgi_params;
                        uwsgi_pass     127.0.0.1:9001;
                }

К сожалению, когда я захожу в / django / admin. Я получаю ошибку

Страница не найдена (404) Метод запроса: GET URL-адрес запроса: http: //69.x.x.x/django/admin Используя URLconf, определенный в Django.urls, Django попробовал эти шаблоны URL в следующем порядке: ^ admin /

Как я могу заставить nginx переписать URL-адрес, чтобы не передавать часть / django?

Должно быть что-то вроде следующего в uwsgi_params файл:

uwsgi_param  QUERY_STRING       $query_string;
uwsgi_param  REQUEST_METHOD     $request_method;
uwsgi_param  CONTENT_TYPE       $content_type;
uwsgi_param  CONTENT_LENGTH     $content_length;

uwsgi_param  REQUEST_URI        $request_uri;
uwsgi_param  PATH_INFO          $document_uri;
uwsgi_param  DOCUMENT_ROOT      $document_root;
uwsgi_param  SERVER_PROTOCOL    $server_protocol;

uwsgi_param  REMOTE_ADDR        $remote_addr;
uwsgi_param  REMOTE_PORT        $remote_port;
uwsgi_param  SERVER_PORT        $server_port;
uwsgi_param  SERVER_NAME        $server_name;

Это параметры, переданные вашему приложению. Я думаю тебе нужно поменять request_uri в $ host, чтобы удалить все, что находится за именем хоста.

Вы также можете установить эту переменную внутри конфигурации виртуального сервера, она должна перезаписать ее локально. Сделай это раньше uwsgi_pass 127.0.0.1:9001;.

АЛЬТЕРНАТИВНЫЙ МЕТОД Также вы можете создать следующее правило перезаписи:

rewrite ^(.*)/(.*)$ $1 last;

и добавьте его в location / часть, но я не уверен, что это сработает так, как ожидалось.