Контекстный путь на обратном прокси-сервере Apache для нескольких внутренних служб

#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>