#apache #url-rewriting #httpd.conf #proxypass
#апач #url-переписывание #httpd.conf #проксипасс
Вопрос:
Как я могу использовать a ProxyPass
и DirectoryIndex
одновременно?
У меня есть следующее правило:
# Index
DirectoryIndex index.html
# Service Endpoint
ProxyPass /endpointA http://127.0.0.1:wxyz/
ProxyPassReverse /endpointA http://127.0.0.1:wxyz/
# Root Endpoint
ProxyPass / http://127.0.0.1:8080/static/
ProxyPassReverse / http://127.0.0.1:8080/static/
Ожидаемое поведение заключается в том , что , когда пользователь попадает на компьютер /
, он должен быть обслужен 127.0.0.1:8080/static/index.html
Однако я получаю 404 от /static/
конечной точки, поскольку кажется, что страница по умолчанию не пытается быть загруженной; все это работает правильно, если я нажму
/index.html
Что направляет меня к 127.0.0.1:8080/static/index.html
Как я могу заставить ProxyPass и DirectoryIndex работать одновременно или какую-либо другую комбинацию конфигурации, чтобы, когда пользователь просто нажимает
/
, они перенаправлялись127.0.0.1:8080/static/index.html
, а не просто127.0.0.1:8080/static
?
Ответ №1:
Проблема в том, что DirectoryIndex не будет использоваться, потому что сервер уже сопоставил ProxyPass / , и поэтому он уже был передан на другой сервер.
Вы должны установить DirectoryIndex на своем внутреннем сервере. то есть на порту 8080.
Комментарии:
1. Ваш ответ может привести к путанице. Используется DirectoryIndex, чтобы index.html является ли он локальным или удаленным, не имеет никакого значения.
2. Используется ли DirectoryIndex на поддерживаемом сервере? В противном случае запрос к бэкбенд-серверу на / просто завершится неудачей.
3. Это, op уже сказал, что часть, я добавил новый ответ, чтобы предложить, что он может сделать, чтобы избежать /index.html будучи обратным прокси-сервером.
4. Где это говорит что-нибудь о DirectoryIndex внутреннего сервера?
5. Я полностью извиняюсь, мне показалось, что мне не хватило кофе, и я неправильно все понял. Я исправил свой ответ после прочтения и некоторого тестирования. Спасибо за ваше терпение!
Ответ №2:
Я протестировал несколько способов, и единственный, кто дал тот же результат, который вы, кажется, хотите для меня на данный момент, похоже, использует mod_rewrite, как в:
RewriteEngine on
RewriteRule ^/$ http://127.0.0.1:8080/static/index.html [P,L]
затем вы можете добавить все остальное:
RewriteRule ^/(. ) http://127.0.0.1:8080/static/$1 [P,L]
Это может быть грубый способ сделать это.
Комментарии:
1. Это не дает ответа на вопрос. Пользователь хочет index.html быть прокси-сервером.
2. wops, вы совершенно правы, я неправильно понял, позвольте мне это исправить.
3. кстати, я также поддерживаю ответ @DanielScott, в котором он говорит вам использовать такие перенаправления или индексные ссылки в самой серверной части, поскольку вы в любом случае отказываетесь от / к серверной части. Единственный способ, который я нашел для управления этим из интерфейса в этом случае, — это mod_rewrite, или, по крайней мере, в моих тестах, это единственное, что имеет приоритет над proxypass