使用默认配置,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 端口?
只有 root 能够绑定到低于 1024 的端口。这就是 jenkins 默认在 port 上运行的原因
8080
,因为它们不是特权端口的一部分。解决这个问题的一种方法是在 jenkins 前面有一个反向代理,比如apache
ornginx
,监听 port80
。然后,它应该将流量转发到后端,即端口 8080 上的 jenkins。我强烈建议不要将 jenkins 直接设置为端口 80。解决此问题的另一种方法是使用 iptables。看看这个线程,看看这是否能帮助你解决你的问题。 这是众多教程之一,如何在 nginx 或 apache 后面运行 jenkins如果您正在运行 systemd,一个更简洁的答案是让进程能够绑定到服务端口。运行
systemctl edit jenkins.service
并添加以下部分:然后重启服务。如果您需要 HTTPS,则用于绑定到 443 的类似解决方案。