Рейтинг:0

Изменить общедоступный путь прохождения прокси-сервера Nginx

флаг in

У меня есть API Python/Django с уникальной конечной точкой. /ролики работает на моем сервере Debian.

Виртуальный хост Nginx выглядит так:

сервер {

    имя_сервера пример.com;

    место расположения / {
        # Переход к сервису веб-сервера Uvicorn/Gunicorn
        proxy_pass http://upstream_name/;
        proxy_set_header Хост $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $ схема;
    }

    слушать 443 ssl; # под управлением Certbot
    ssl_certificate /path_to/fullchain.pem; # под управлением Certbot
    ssl_certificate_key /path_to/privkey.pem; # под управлением Certbot
    включить /etc/letsencrypt/options-ssl-nginx.conf; # под управлением Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # под управлением Certbot

}

вверх по течению upstream_name {
    сервер 127.0.0.1:8002;
}

Таким образом, он успешно обслуживает приложение и его уникальную конечную точку на https://example.com/videos.

Теперь я хотел бы обслуживать приложение на https://example.com/my_app/videos, чтобы в будущем другие приложения обслуживались в том же домене/виртуальном хосте (конечно, с разными внутренними портами, разными восходящими потоками в виртуальном хосте).

Я читал несколько похожих вопросов и ответов по ServerFault и пытался изменить место расположения / к местоположение /my_app, пробуя разные конфиги с косой чертой на место расположения и proxy_pass, безуспешно. Что мне здесь не хватает?

РЕДАКТИРОВАТЬ: Точнее:

  • С изменением vhost на местоположение /мое приложение -> https://example.com/my_app/videos отображает ошибку Not Found (не от Nginx)

  • С изменением vhost на местоположение /мое_приложение/ -> https://example.com/my_app/videos получить перенаправление на https://example.com/videos/ и отображает ошибку 404 Not Found (от Nginx)

флаг us
Пожалуйста, покажите точную конфигурацию, которую вы пробовали, и какие шаги вы предприняли, чтобы воспроизвести проблему?
флаг in
@TeroKilkanen Конечно, отредактировано.
флаг us
Вам необходимо настроить новый корневой URL-адрес в своем приложении. Для меня второй сбой выглядит так, как будто ваше приложение отправляет перенаправление на URI `/videos`.
флаг in
Вы правы, ему нужна конфигурация на стороне приложения. Я решил это, добавив параметр FORCE_SCRIPT_NAME в настройку Django. Точнее, для этого нужно FORCE_SCRIPT_NAME = '/my_app/' С косой чертой в конце.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.