我刚刚在Ubuntu 16.04服务器上通过以下方式安装了Jenkins:
wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -
echo "deb https://pkg.jenkins.io/debian-stable binary/" >> /etc/apt/sources.list
apt update
apt install jenkins
之后我将/etc/default/jenkins
中的端口更改为HTTP_PORT=8000
并将--httpPort=$HTTP_PORT --prefix=$PREFIX
添加到/etc/default/jenkins
文件中,最后因为我已经通过apache运行了很多东西那里的代理人:
ProxyErrorOverride On
ProxyPass "/jenkins" "http://127.0.0.1:8000/jenkins/"
ProxyPassReverse "/jenkins" "http://127.0.0.1/jenkins/"
但是当我尝试访问https://MY_URL/jenkins
时,我得到了一个
禁止
您无权访问此服务器上的/ jenkins。
但是当我在服务器上curl localhost:8000
时,我似乎得到了该页面。所以它似乎至少在该端口上运行,我只是无法通过apache访问它(其他代理如/ gitlab以相同的方式工作)。
有没有人知道这里可能出现什么问题?
修改:当我停用ProxyErrorOverride On
时,我终于看到了可以输入管理员密码的页面,但这样做会将我重新定向到同一页面:
https://my_url/jenkins/login?from=%2Fjenkins%2F
- > https://my_url/jenkins/login?from=%2Fjenkins%2F%2Fj_acegi_security_check
。
所以apache的当前配置如下所示:
## Proxy Settings
ProxyRequests Off
ProxyPreserveHost On
AllowEncodedSlashes NoDecode
SetEnv proxy-nokeepalive 1
ProxyPass "/gitlab" "http://127.0.0.1:8001/gitlab/"
ProxyPassReverse "/gitlab" "http://127.0.0.1:8001/gitlab/"
ProxyPass "/jenkins" "http://127.0.0.1:8000/jenkins/" nocanon
ProxyPassReverse "/jenkins" "http://127.0.0.1:8000/jenkins/"
ProxyPassReverse "/jenkins" "http://my_url/jenkins/"
RequestHeader set X-Forwarded-Proto "https"
RequestHeader set X-Forwarded-Port "443"
答案 0 :(得分:1)
好吧我终于找到了错误:
必须删除第一个ProxyErrorOverride On
,然后我必须删除ProxyPass中的尾部斜杠,如下所示:
ProxyPass "/jenkins" "http://127.0.0.1:8000/jenkins" nocanon
ProxyPassReverse "/jenkins" "http://127.0.0.1:8000/jenkins"
ProxyPassReverse "/jenkins" "http://my_url/jenkins"
有趣的是,gitlab确实要求它正常工作,如果“/”在那里,jenkins就不起作用。
答案 1 :(得分:-1)
也许防火墙阻止了詹金斯
对我来说,只需运行此命令即可解决此问题
/etc/init.d/iptables.sh stop