Обратный прокси-сервер два сервера на основе subpath


Вопрос Апача. Должно быть, что-то простое, но я терплю неудачу.

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

Моя идея такова:

mydomain.com -> localhost:8083
mydomain.com/api -> localhost:8080/api

В настоящее время мой конфиг таков:

<VirtualHost *:80>
        ProxyPreserveHost On
        ProxyRequests Off
        ServerName mydomain.com
        ServerAlias www.mydomain.com

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

        ProxyPass / http://localhost:8083/
        ProxyPassReverse / http://localhost:8083/

        ProxyPass /api http://localhost:8080/api #already tried with slashes on both first and second parameters
        ProxyPassReverse /api http://localhost:8080/api #already tried with slashes on both first and second parameters

</VirtualHost>

Но /api не работает, он продолжает посылать запрос на 8083. Есть идеи, почему?

Спасибо за внимание

1 2

1 ответ:

Попробуйте выполнить' / api 'ProxyPass+ProxyPassReverse перед'/'. Я сильно подозреваю, что " / "действует как ловушка, и вы никогда не доберетесь до дела "/api". Это объясняет, почему вы всегда идете к 8083, который является ' / ' случаем.

<VirtualHost *:80>
        ProxyPreserveHost On
        ProxyRequests Off
        ServerName mydomain.com
        ServerAlias www.mydomain.com

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

        ProxyPass /api http://localhost:8080/api #already tried with slashes on both first and second parameters
        ProxyPassReverse /api http://localhost:8080/api #already tried with slashes on both first and second parameters

        # do this last...
        ProxyPass / http://localhost:8083/
        ProxyPassReverse / http://localhost:8083/


</VirtualHost>