通过 Tomcat7 和 Apache2 访问 Jenkins

通过 Tomcat7 和 Apache2 访问 Jenkins

我正在设置一个 CI/CD 服务器*h,它托管在我家后面的一个小盒子上。e2/mods-e/目前,我有一个通过 Tomcat7 在端口 8080 上运行的 Jenkins 实例,以及一个在端口 9000 上运行的 SonarQube 实例。

我希望能够通过以下方式访问这些http://my.website.com/jenkinshttp://my.website.com/sonarqube并阻止它们通过端口进行访问(即。http://my.website.com:9000/sonarqube

目前,我有一个位于/etc/apache2/sites-available/链接到的/etc/apache2/sites-enabled/jenkins.confjk 模块,并在中启用/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:8080server它自己,因此在 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

这几乎与我为自己的几项服务所设置的设置完全相同。

相关内容