Apache: использовать RewriteRule в качестве прокси-сервера

Я пытаюсь разместить мой интерфейс на каком-то общем хостинге, но столкнуться с некоторыми проблемами с этим.
Примечание. Это не , которое должно быть окончательным решением для хостинга, но я смогу вручную проверить вещи более точно таким образом.

Моему интерфейсу требуется доступ к некоторому API, расположенному на другом сервере. Для удобства (аутентификация и тому подобное) я хотел бы передавать свои запросы API на внутренний сервер через прокси.
Однако нахождение в среде общего хостинга ограничивает мои возможности:

  • Я не могу изменить конфигурацию VirtualHost
  • mod_proxy , похоже, отключен, поэтому нет ProxyPass или ProxyPassReverse разрешено
  • mod_rewrite вроде бы включен

Я думал об использовании
RewriteRule ^ / api /(.*)$ https: // example.com/$1
в качестве своего рода прокси, но я боюсь, что это не сработает так, как задумано ...

Я открыт для любых предложений и «Не делайте этого!»

2
задан 16 May 2019 в 11:07
1 ответ

Вы не можете создать прокси с помощью Apache без mod_proxy. Флаг P , который можно использовать с mod_rewrite (в директиве RewriteRule ), использует mod_proxy.

 RewriteRule ^ / api /(.*)$ https://example.com  / $ 1
 

Предположительно, вы ограничены .htaccess , и в этом случае вышеуказанный шаблон RewriteRule (с префиксом косой черты) никогда не будет соответствовать, поэтому директива не будет ' я ничего не делаю. Однако даже после исправления шаблона , когда вы указываете абсолютный URL в подстановке RewriteRule , он неявно запускает внешнее перенаправление 302 (если запрос не отправлен через mod_proxy) - что, как я понимаю, вам не нужно.

Я могу только предложить вам, возможно, управлять этим «прокси» с помощью вашего серверного кода. Например, вы могли бы потенциально использовать CURL для «прокси» запроса?

2
ответ дан 3 December 2019 в 11:22

Теги

Похожие вопросы