Назад | Перейти на главную страницу

Apache как прокси для Nexus, Jenkins и Foreman (несколько VirtualHosts в одном домене, 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)

Если вы используете одно имя сервера, оно не будет работать так, как вы хотите. Все, что вам нужно, это объединить 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