Доступ к Jenkins через Tomcat7 и Apache2

Я настраиваю CI/CD-сервер * h, размещенный на маленькой коробке, которая находится у меня в глубине дома. e2 / mods-e / В настоящее время у меня есть экземпляр Jenkins, работающий через Tomcat7 через порт 8080, и экземпляр SonarQube, работающий через порт 9000.

То, что я хотел бы сделать, это получить доступ к каждому из них через http://my.website.com/jenkins и http://my.website.com/sonarqube соответственно и заблокировать доступ к ним через порт (т.е. http://my.website.com:9000/sonarqube)

В настоящее время у меня есть jenkins.conf, расположенный в /etc/apache2/sites-available/ связано с /etc/apache2/sites-enabled/jenkins.conf и модуль JK включен в /etc/apache2/mods-enabled/jk.conf а также /etc/apache2/mods-enabled/jk.load

Это содержимое моего jenkins.conf (как предлагается в этом посте)

<VirtualHost *:80>
    ServerAdmin zymus@localhost
    ServerName jenkins.mysite.net
    ServerAlias jenkins
    ProxyRequests Off
    <Proxy *>
        Order deny,allow
        Allow from all
    </Proxy>
    ProxyPreserveHost on
    ProxyPass /jenkins http://localhost:8080/jenkins nocanon
    AllowEncodedSlashes NoDecode
</VirtualHost>

Однако при переходе по http://my.site.com/jenkins я получаю ошибку 404. Но доступ к нему через http://my.site.com:8080/jenkins работает.

Какие дальнейшие шаги я могу предпринять, чтобы достичь этого?

ОБНОВЛЕНИЕ: я смог посетить сайт, изменив

ProxyPass /jenkins http://localhost:8080/jenkins nocanon

в

ProxyPass / http://localhost:8080/jenkins nocanon

Но я все еще хотел бы не иметь возможности посетить его через:8080. Или это то, что я не должен пытаться?

РЕДАКТИРОВАТЬ: Мне удалось все настроить. Основной причиной было то, что я определял VirtualHost в каждом из файлов конфигурации сайта, поэтому sonar.conf и jenkins.conf оба имели элемент VirtualHost. Я удалил это, и оба сайта работали.

1 ответ

Решение

Чтобы ваш прокси-сервер мог передавать ваш запрос и ответ от сервера jenkins на 8080, он должен быть доступен, по крайней мере, для него по адресу jenkins_box:8080,

Ограничение доступа:

Из более широкого интернета

Если и экземпляр jenkins, и прокси-сервер работают на одном компьютере (как в вашем случае), все, что вам нужно сделать, - это запретить кому-либо из вашей локальной сети (кто-то получить доступ). my.website.com из более широкого интернета) просто НЕ переадресуйте порт 8080 с вашего роутера на ваш сервер. Вперед просто порт 80.

Вы можете иметь почти идентичные блоки виртуальных хостов, один для sonarqube, установленный на имя сервера. sonarqube.mywebsite.comи еще один для Дженкинса, установленный на jenkins.mywebsite.com, Переадресация только порта 80 на эту машину и бинго банго из Интернета - единственный способ получить доступ к этим сервисам через эти субдомены.

В вашей локальной сети

Поскольку единственное устройство, которое вы хотите разрешить доступ server:8080 является server В директивах virtualhost для sonarqube и jenkins вы можете установить параметры Allow и Deny.

Например:

Order deny,allow Allow from 127.0.0.1

Идет внутри каждого блока виртуального хоста. Вы также можете указать IP-адрес сервера в качестве дополнительного разрешенного IP-адреса (притворяясь, что IP-адрес вашего сервера - 192.168.1.12):

Allow from 127.0.0.1 192.168.1.12

Это почти то же самое, что и мои настройки для нескольких моих служб.

Другие вопросы по тегам