如何配置 Jenkins 在 HTTP 端口 80 上运行,仅特定子域上的某个 Apache 虚拟服务器可访问?
我有一个虚拟服务器:business.com 在服务器上运行。我还有另一个虚拟服务器,personal.com 也在运行。
我希望詹金斯在http://jenkins.personal.com:80/
这可能吗?我该怎么做?
提前致谢。
我正在使用带有 Apache2 的 Ubuntu 13.10。任何其他信息都可以提供:)
答案1
您不需要直接在端口 80 上为 Jenkins 提供服务。您可以使用 Apache2 安装来代理 Jenkins,并使用 Apache2 代理模块(您需要启用代理模块并重新启动 Apache2)。
在这里您可以检查我自己的由 Apache2 代理的 Jenkins 安装,实际上我通过 HTTPS(443)、HTTP(80)为其提供服务,只是重定向到安全连接。
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName jenkins.ociotec.com
ErrorLog ${APACHE_LOG_DIR}/jenkins.ociotec.com.error.log
CustomLog ${APACHE_LOG_DIR}/jenkins.ociotec.com.access.log combined
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
</VirtualHost>
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerAdmin [email protected]
ServerName jenkins.ociotec.com
ErrorLog ${APACHE_LOG_DIR}/jenkins.ociotec.com.error.log
CustomLog ${APACHE_LOG_DIR}/jenkins.ociotec.com.access.log combined
SSLEngine on
SSLProxyEngine on
SSLCertificateFile /etc/apache2/ssl/jenkins.ociotec.com.cert
SSLCertificateKeyFile /etc/apache2/ssl/jenkins.ociotec.com.key
ProxyPreserveHost On
ProxyPass / http://ociotec.com:8001/
ProxyPassReverse / http://ociotec.com:8001/
</VirtualHost>
</IfModule>
正如您在最后看到的,我的 Jenkins 在 上提供服务http://ociotec.com:8001
,但由 中的 Apache 代理https://jenkins.ociotec.com
。