使用默认配置,Jenkins 正在侦听端口 8080:
$ ss -tulpn | grep 8080
tcp LISTEN 0 50 *:8080 *:* users:(("java",pid=3052,fd=115)
然而,我想改变这一点,让 Jenkins 监听端口 80。
当我进入/etc/sysconfig/jenkins
并更改JENKINS_PORT
为JENKINS_PORT="80"
并重新启动时sudo service jenkins restart
,我得到:
$ ss -tulpn | grep 8080
$ ss -tulpn | grep 80
$ curl localhost:8080
curl: (7) Failed to connect to localhost port 8080 after 0 ms: Connection refused
$ curl localhost:80
curl: (7) Failed to connect to localhost port 80 after 0 ms: Connection refused
如何让Jenkins监听80端口?
答案1
答案2
如果您正在运行 systemd,一个更简洁的答案是为进程提供绑定到服务端口的能力。运行systemctl edit jenkins.service
并添加以下部分:
[Service]
Environment="JENKINS_PORT=80"
AmbientCapabilities=CAP_NET_BIND_SERVICE
然后重新启动服务。如果您需要 HTTPS,则可以使用类似的解决方案绑定到 443。
答案3
在带有 的系统上authbind
,您可以允许 Jenkins 绑定到端口 80,而不授予其完全CAP_NET_BIND_SERVICE
访问权限。运行systemctl edit jenkins.service
,我们添加
[Service]
Environment="JENKINS_PORT=80"
ExecStart=/usr/bin/authbind --depth 2 /usr/bin/jenkins
并设置 Jenkins 以允许端口 80:
touch /etc/authbind/byport/80
chown jenkins:jenkins /etc/authbind/byport/80
chmod 774 /etc/authbind/byport/80