Как использовать ProxyPass для '/ path /' вместо root '/'?

Я хитро использую Ubuntu-15.10, Apache-2.4.12

Я пытался использовать ProxyPass в VirtualHost с поддержкой SSL, например:

ProxyRequests Off
ProxyPreserveHost On
<Proxy *>
    Require all granted
</Proxy>
ProxyPass /myapp/ http://127.0.0.1:8090/
ProxyPassReverse /myapp/ http://127.0.0.1:8090/

С приведенной выше конфигурацией я предполагал, что обслуживается сервером на этом порту, например web будет добавлен к https://www.example.com/myapp/web .

Однако это не что я получаю. В журналах Apache я получаю:

... File does not exist: /var/www/html/web, referer: https://www.example.com/myapp/

Это потому, что я не понимаю, что должен делать ProxyPass ? Или что-то не так с моей конфигурацией, и мне нужно исправить?

ДОБАВЛЕНИЕ (18 февраля 2016 г.)

Я включил ведение журнала для mod_proxy и вижу следующее, чего нет: не имеет смысла:

... connecting http://127.0.0.1:8090/ to 127.0.0.1:8090
... connected / to 127.0.0.1:8090
... fam 2 socket created to 127.0.0.1
... connection established with 127.0.0.1:8090 (127.0.0.1)
... connection complete to 127.0.0.1:8090 (127.0.0.1)
... http: has released connection for (127.0.0.1)
... proxy: connection shutdown

Я предполагаю, что один из адресов в первой строке является внутренним заполнителем, а другой - получаемым URL. Но почему во второй строке полученный URL-адрес подключается к / вместо / myapp / согласно ProxyPass?

0
задан 19 February 2016 в 07:51
1 ответ

Я нашел решение, но это не то, на что я надеялся, и не то, что я ожидал от чтения ProxyPass . Возможно, это ошибка с моей стороны, или документация не так ясна, как должна быть. ProxyPass не может добавлять прокси-URL к пути вымышленного имени. Итак, мне пришлось заставить мое приложение загружаться из каталога на указанном порту, а не из корня URL-адреса как такового:

ProxyPass /myapp http://127.0.0.1:8090/myapp
ProxyPassReverse /myapp http://127.0.0.1/myapp

Кроме того, A RewriteRule также должен использоваться, если есть ресурсы, которые нужно загрузить, например запросы, изображения, сценарии и т. д.

Правила перезаписи следующие:

RewriteEngine On
RewriteRule ^(.*) http://0.0.0.0:8090/$1 [P,L]

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

Итак, в итоге, по крайней мере, первый компонент пути должен присутствовать на обоих концах, чтобы ProxyPass выполнял свою работу. Я не могу использовать ProxyPath для загрузки созданного мной пути без дополнительных сложностей в настройках прокси.

Надеюсь, кто-нибудь найдет этот ответ помощи.

0
ответ дан 5 December 2019 в 10:42

Теги

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