Как обслуживать подкаталог приложения (127.0.0.1:8000/app-subdirectory) из корневого URL-адреса?
Я запутался, как это сделать. Кажется, что большинство в сети хотят обслуживать подкаталог (example.com/my-subdirectory) для различных корней приложения.
Я хочу, чтобы example.com/foo был прозрачно проксирован до 127.0.0.1/my-subdirectory/foo.
Есть указатели?
Я пробовал почти все комбинации proxy_pass и proxy_redirect:(
Я чувствую, что это очень близко
201 rewrite /(.*) /my-subdirectory/$1 break;
202 proxy_pass http://127.0.0.1:8000;
203 proxy_redirect off;
205 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
Но, к сожалению, это переписывает URL-адрес в браузере тоже.
Обновить
Я обнаружил, что прокси-сервер работает, но мое приложение перенаправляется на HTTPS, делая большую часть моей отладки бесполезной. Я бы изменил настройку в nginx и нашел бы запутанный вывод, циклы перенаправления и т. Д., Поскольку nginx проходил через правила listen 443.
Теперь, когда я отключил как можно больше перенаправлений в своем приложении, все возвращается к здравому смыслу.
Спасибо всем за отрицательные отзывы - я не думаю, что мой вопрос был особенно недостойным, и я задаю вопросы только тогда, когда я потратил по крайней мере 5 часов, работая над проблемой без конца.
1 ответ
Вам не нужно ничего переписывать, если вы просто хотите передать все в свое приложение. Попробуйте что-нибудь вместе
location / {
proxy_pass http://127.0.0.1:8000/my-subdirectory/;
proxy_redirect off;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
Чтобы ваш браузер был перенаправлен на правильный хост (если ваше приложение этого не делает), вы должны использовать
proxy_redirect default;
вместо этого, который должен быть эквивалентен
proxy_redirect http://127.0.0.1:8000/my-subdirectory/ /;
в твоем случае. Проверьте