【发布时间】:2018-01-28 01:49:54
【问题描述】:
我刚刚通过以下方式在 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"
【问题讨论】:
-
是的,我试过
ProxyPreserveHost On, ProxyRequests Off, AllowEncodedSlashes NoDecode, SetEnv proxy-nokeepalive 1。以及将nocanon添加到 ProxyPass。但没有可见的变化。