Доступ к 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
Это почти то же самое, что и мои настройки для нескольких моих служб.