gpt4 book ai didi

proxy - 使用 nginx http auth 保护 Jenkins,回调 url 除外

转载 作者:行者123 更新时间:2023-12-03 12:55:05 24 4
gpt4 key购买 nike

我在我的服务器上安装了 jenkins,我想用 nginx http auth 保护它,以便请求:

http://my_domain.com:8080
http://ci.my_domain.com

除了一个位置外,将受到保护:
http://ci.my_domain.com/job/my_job/build

需要触发构建。我对 nginx 有点陌生,所以我坚持使用 nginx 配置。
upstream jenkins {
server 127.0.0.1:8080;
}

server {
listen x.x.x.x:8080;
server_name *.*;

location '/' {
proxy_pass http://jenkins;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;

auth_basic "Restricted";
auth_basic_user_file /path/.htpasswd;
}
}

我像上面的配置一样尝试过,但是当我访问 http://my_domain.com:8080 时没有 http 身份验证。

最佳答案

最后我想出了如何解决这个问题。首先,我们需要在 Manage Jenkins 页面取消选中“Enable security”选项。禁用安全性后,我们可以通过类似 http://ci.your_domain.com/job/job_name/build 的请求触发我们的作业。 .

如果要添加 token 以触发 URL,我们需要启用安全性,选择“基于项目的矩阵授权策略”并授予匿名用户管理员权限。在项目的配置页面之后将是“远程触发构建”选项,您可以在其中指定 token ,以便您的请求看起来像 JENKINS_URL/job/onru/build?token=TOKEN_NAME
因此,在禁用安全性的情况下,我们需要保护 http://ci.your_domain.com使用 nginx http_auth 除了像 /job/job_name/build' 这样的 URL .

当然,我们需要对外部请求隐藏 8080 端口。由于我的服务器在 Ubuntu 上,我可以使用 iptables 防火墙:

iptables -A INPUT -p tcp --dport 8080 -s localhost -j ACCEPT
iptables -A INPUT -p tcp --dport 8080 -j DROP

但!在 ubuntu 上(我不确定其他 linux oses)iptables 会在重启后消失。所以我们需要用以下方法保存它们:
iptables-save

这还不是结束。使用这个命令,我们只得到一个带有 iptables 的文件。在启动时我们需要加载 iptables,最简单的方法是使用 'uptables-persistent' 包:
sudo apt-get install iptables-persistent
iptables-save > /etc/iptables/rules

如果需要,请仔细查看 iptables https://help.ubuntu.com/community/IptablesHowTo#Saving_iptables祝 Jenkins 好运!

在您的服务器的子域上运行 jenkins 有一个很好的例子: https://wiki.jenkins-ci.org/display/JENKINS/Running+Hudson+behind+Nginx

关于proxy - 使用 nginx http auth 保护 Jenkins,回调 url 除外,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11644774/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com