#apache #reverse-proxy #httpd.conf
#apache #обратный прокси #httpd.conf
Вопрос:
У меня есть настройка для обратного прокси-сервера apache для нескольких приложений, как показано ниже:
https://serverxx:8000 -> http://localhost:9000
https://serverxx:8001 -> http://localhost:9001
https://serverxx:8002 -> http://localhost:9002
В /etc /httpd /conf.d / есть 3 файла виртуальных хостов, которые выполняют эту настройку, и они выглядят следующим образом:
Listen 8000 https
<VirtualHost *:8000>
ProxyPreserveHost On
SSLProxyEngine on
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
SSLEngine on
SSLCertificateFile /etc/pki/tls/certs/server.crt
SSLCertificateKeyFile /etc/pki/tls/private/server.key
Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains;"
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
ProxyPass / http://localhost:9000/
ProxyPassReverse / http://localhost:9000/
</VirtualHost>
Из-за новых требований требуется некоторый пересмотр. 3 приложения, которые доступны через https://serverxx:800 [0,1,2] теперь должно выглядеть так:
https://serverxx/app1 -> http://localhost:9000
https://serverxx/app2 -> http://localhost:9001
https://serverxx/app3 -> http://localhost:9002
Другими словами, serverxx будет прослушивать только 1 порт (443) и иметь 3 разных контекстных пути для 3 разных проксируемых служб.
Возможно ли это вообще? Я читал на https://httpd.apache.org/docs/2.4/vhosts/examples.html но не смог получить определенного ответа.
Заранее спасибо.
Ответ №1:
Я, наконец, понял это.
Для тех, кого интересует ответ, ключевым моментом является добавление нескольких значений ProxyPass и ProxyPassReverse для каждого контекстного пути, указывающего на несколько внутренних серверов.
Listen 8000 https
<VirtualHost *:8000>
ProxyPreserveHost On
SSLProxyEngine on
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
SSLEngine on
SSLCertificateFile /etc/pki/tls/certs/server.crt
SSLCertificateKeyFile /etc/pki/tls/private/server.key
Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains;"
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
ProxyPass /app1 -> http://localhost:9000
ProxyPassReverse /app1 -> http://localhost:9000
ProxyPass /app2 -> http://localhost:9001
ProxyPassReverse /app2 -> http://localhost:9001
ProxyPass /app3 -> http://localhost:9002
ProxyPassReverse /app3 -> http://localhost:9002
</VirtualHost>