我正在设置一个 CI/CD 服务器*h,它托管在我家后面的一个小盒子上。e2/mods-e/目前,我有一个通过 Tomcat7 在端口 8080 上运行的 Jenkins 实例,以及一个在端口 9000 上运行的 SonarQube 实例。
我希望能够通过以下方式访问这些http://my.website.com/jenkins和http://my.website.com/sonarqube并阻止它们通过端口进行访问(即。http://my.website.com:9000/sonarqube)
目前,我有一个位于/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/詹金斯作品。
我可以采取哪些下一步措施来实现这一目标?
更新:我可以通过更改来访问该网站
ProxyPass /jenkins http://localhost:8080/jenkins nocanon
到
ProxyPass / http://localhost:8080/jenkins nocanon
但是,我仍然不想通过 :8080 访问它。或者这是我不应该尝试的事情?
编辑:我设法设置好了一切。主要原因是我在每个站点配置文件中都定义了 VirtualHost,因此 sonar.conf 和 jenkins.conf 都包含 VirtualHost 元素。我删除了它,两个站点都可以正常工作。
答案1
为了使您的代理服务器能够将您的请求传递给 8080 上的 jenkins 服务器并从其返回响应,它必须至少对其自身可用,在jenkins_box:8080
。
限制访问:
来自更广泛的互联网
如果 jenkins 实例和代理服务器都在同一台机器上运行(如您的情况),那么您需要做的就是阻止来自 LAN 之外的某人(my.website.com
从更广泛的互联网访问的某人)简单地将端口 8080 从您的路由器转发到您的服务器。仅转发端口 80。
你可以有几乎相同的虚拟主机块,一个用于 sonarqube,设置为 servername sonarqube.mywebsite.com
,另一个用于 jenkins,设置为jenkins.mywebsite.com
。仅将端口 80 转发到该机器,然后 bingo bango,从互联网上,访问这些服务的唯一方法是通过这些子域。
在您的局域网上
由于您只想允许访问的设备server:8080
是server
它自己,因此在 sonarqube 和 jenkins 的 virtualhost 指令中,您可以设置允许和拒绝设置。
例如:
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
这几乎与我为自己的几项服务所设置的设置完全相同。