Я пытаюсь перенаправить службы, работающие на локальном хосте под разными портами, на подпуть на одном порту. Например http://127.0.0.100:5687/ к http://127.0.0.1/app/.
Проблема, с которой я столкнулся, заключается в том, что работает только первый блок виртуального хоста. Если я поменяю местами 2 хоста, будет работать только самый верхний / первый хост. Все остальные хосты возвращают ошибку Not Found.
Вот рассматриваемые директивы apache:
<VirtualHost *:80>
ServerName app1.example.com
#ServerAlias app1
ProxyRequests Off
ProxyPass /app1 http://127.0.0.1:6687/
ProxyPassReverse /app1 http://127.0.0.1:6687/
</VirtualHost>
<VirtualHost *:80>
ServerName app2.example.com
#ServerAlias app2
ProxyRequests Off
ProxyPass /app2 http://127.0.0.1:7687/
ProxyPassReverse /app2 http://127.0.0.1:7687/
</VirtualHost>
Что я здесь не вижу? Почему работает только первый виртуальный хост?
Ни один из ваших VirtualHost
блоки матчей 127.0.0.1
, поэтому Apache берет первый найденный блок.
Ваши виртуальные хосты отличаются ServerName
. Если вы хотите достичь обоих /app1
и /app2
с участием 127.0.0.1
вы должны разместить оба ProxyPass
директивы в том же VirtualHost
блок.
<VirtualHost *:80>
ServerName app1.example.com
ServerAlias app2.example.com
ProxyRequests Off
ProxyPass /app1 http://127.0.0.1:6687/
ProxyPassReverse /app1 http://127.0.0.1:6687/
ProxyPass /app2 http://127.0.0.1:7687/
ProxyPassReverse /app2 http://127.0.0.1:7687/
</VirtualHost>
Или просто используйте ServerName
вместо этого в ваших http-запросах.
http://app1.example.com/app1/
http://app2.example.com/app2/
В /app*
в любом случае избыточно, я бы просто отбросил его и использовал ProxyPass / http://...
с двумя VirtualHosts.