Apache как прокси для Nexus, Jenkins и Foreman (несколько виртуальных хостов в одном домене, IP и порте)
Я хотел бы настроить Apache для использования в качестве прокси для Nexus, Jenkins и Foreman, которые установлены и работают на одном сервере.
Вот пример файла конфигурации виртуального хоста для Foreman, остальные файлы для Nexus и Jenkins выглядят примерно так же, за исключением параметров передачи прокси.
LoadModule ssl_module modules/mod_ssl.so
NameVirtualHost *:443
<VirtualHost *:443>
  SSLEngine On
  SSLProxyEngine On
  SSLCertificateFile /etc/httpd/ssl/certs/ssl.crt
  SSLCertificateKeyFile /etc/httpd/ssl/keys/server.key
  ServerName management.domain.com
  <Proxy *>
     Order deny,allow
     Allow from all
  </Proxy>
  ProxyPass        /foreman http://127.0.0.1:3000/foreman
  ProxyPassReverse /foreman http://127.0.0.1:3000/foreman
  ProxyPassReverse /foreman http://management.domain.com/foreman
  ProxyRequests Off
  ProxyPreserveHost On
  ErrorLog /var/log/httpd/management.domain.com_foreman_error.log
  LogLevel warn
  CustomLog /var/log/httpd/management.domain.com_foreman_access.log combined
</VirtualHost>
Проблема в том, что Apache учитывает только один файл конфигурации и игнорирует два других, что приводит к сообщению об ошибке "Запрошенный URL /jenkins/ не найден на этом сервере". когда я пытаюсь получить доступ к URL management.domain.com/jenkins
Как настроить Apache для загрузки трех виртуальных хостов? Спасибо
PS: директива Listen объявлена в httpd.conf (= 443)
1 ответ
Если вы используете одно имя сервера, оно не будет работать так, как вы хотите. Все, что вам нужно, это объединить 3 виртуальных хоста с одним. Что-то вроде
LoadModule ssl_module modules/mod_ssl.so
NameVirtualHost *:443
<VirtualHost *:443>
  SSLEngine On
  SSLProxyEngine On
  SSLCertificateFile /etc/httpd/ssl/certs/ssl.crt
  SSLCertificateKeyFile /etc/httpd/ssl/keys/server.key
  ProxyRequests Off
  ProxyPreserveHost On
  ServerName management.domain.com
  <Proxy *>
     Order deny,allow
     Allow from all
  </Proxy>
  ProxyPass        /foreman http://127.0.0.1:3000/foreman
  ProxyPassReverse /foreman http://127.0.0.1:3000/foreman
  ProxyPassReverse /foreman http://management.domain.com/foreman
  ProxyPass        /nexus http://127.0.0.1:3000/nexus
  ProxyPassReverse /nexus http://127.0.0.1:3000/nexus
  ProxyPassReverse /nexus http://management.domain.com/nexus
  ProxyPass        /jenkins http://127.0.0.1:3000/jenkins
  ProxyPassReverse /jenkins http://127.0.0.1:3000/jenkins
  ProxyPassReverse /jenkins http://management.domain.com/jenkins