如何配置 Nginx 作为 Jenkins 的反向代理并启用 SSL 加密

这篇具有很好参考价值的文章主要介绍了如何配置 Nginx 作为 Jenkins 的反向代理并启用 SSL 加密。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

简介

默认情况下,Jenkins 自带内置的 Web 服务器,监听在 8080 端口上。这对于运行私有 Jenkins 实例或者只是需要快速启动而不关心安全性的用户来说很方便。但是一旦您的主机上有真实的生产数据,使用更安全的 Web 服务器(如 Nginx)来处理流量是个不错的主意。

本文将详细介绍如何使用 Nginx Web 服务器作为 Jenkins 实例的反向代理,为您的站点添加 SSL。本教程假设您对 Linux 命令、已安装的 Jenkins 和 Ubuntu 20.04 安装有一定的了解。

如果您尚未安装 Jenkins,您可以在本教程中安装它。

先决条件

本指南假设您正在使用 Ubuntu 20.04。在开始之前,您应该在系统上设置一个具有 sudo 权限的非root用户帐户。您可以按照 Ubuntu 20.04 初始服务器设置教程来学习如何做到这一点。您还需要安装 Nginx 服务器并托管您的域。您可以按照《在 Ubuntu 20.04 上安装 Nginx》教程来学习如何做到这一点。

另外,通过 SSL 保护您的 Jenkins 实例非常重要。如果它在互联网上可见,您可以使用 Let’s Encrypt 来保护它。您可以按照《如何在 Ubuntu 22.04 上使用 Let’s Encrypt 保护 Nginx》教程来学习如何做到这一点。

正如前面所述,本教程假设 Jenkins 已经安装。本教程将向您展示如何安装 Jenkins(如果需要)。您可能需要切换到 root 用户来完成该文章。

步骤 1 — 配置 Nginx

近年来,Nginx 凭借其速度和灵活性成为了一个受欢迎的 Web 服务器,这使得它成为我们应用的理想选择。

编辑配置

接下来,您需要编辑默认的 Nginx 配置文件。以下示例使用 nano

sudo nano etc/nginx/sites-enabled/default

以下是最终配置的样例;下面简要解释了各个部分。您可以更新或替换现有的配置文件,不过您可能需要先备份一份。

server {
    listen 80;
    return 301 https://$host$request_uri;
}

server {
    listen 443;
    server_name jenkins.domain.com;

    access_log            /var/log/nginx/jenkins.access.log;

    location / {
        proxy_set_header        Host $host;
        proxy_set_header        X-Real-IP $remote_addr;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header        X-Forwarded-Proto $scheme;

        proxy_pass          http://localhost:8080;
        proxy_read_timeout  90;

        proxy_redirect      http://localhost:8080 https://jenkins.domain.com;
    }
    
    ...
}

您需要使用您自己的域名更新 server_nameproxy_redirect 行。还有一些额外的 Nginx 魔法,告诉请求在 Nginx 上被读取并在响应端被重写,以确保反向代理正常工作。

保存并关闭文件。如果您使用的是 nano,您可以按 Ctrl + X,然后按 Y,最后按 Enter 来完成。

第一部分告诉 Nginx 服务器监听在 80 端口(默认 HTTP)上的任何请求,并将它们重定向到 HTTPS。

...
server {
   listen 80;
   return 301 https://$host$request_uri;
}
...

之后,代理开始工作。它基本上接收任何传入的请求,并将它们代理到绑定/监听在本地网络接口的 8080 端口上的 Jenkins 实例。

...
location / {
    proxy_set_header        Host $host;
    proxy_set_header        X-Real-IP $remote_addr;
    proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header        X-Forwarded-Proto $scheme;

    proxy_pass          http://localhost:8080;
    proxy_read_timeout  90;

    proxy_redirect      http://localhost:8080 https://jenkins.domain.com;
}
...

这里有几个要点需要指出。如果您没有一个解析到您的 Jenkins 服务器的域名,那么上面的 proxy_redirect 语句在没有修改的情况下将无法正确运行,所以请记住这一点。另外,如果您错误配置了 proxy_pass(例如添加了尾随斜杠),您将在 Jenkins 配置页面中看到类似以下内容的错误。

!Jenkins error: Reverse proxy set up is broken

因此,如果您看到此错误,请再次检查 Nginx 配置中的 proxy_passproxy_redirect 设置!

步骤 2 — 配置 Jenkins

为了让 Jenkins 与 Nginx 协同工作,我们需要更新 Jenkins 配置,使其仅监听本地地址而不是所有地址(0.0.0.0),以确保流量得到正确处理。这是一个重要的安全步骤,因为如果 Jenkins 仍然在所有地址上监听,那么它仍然可能通过其原始端口(8080)访问。我们将修改 /etc/default/jenkins 配置文件以进行这些调整。

sudo nano /etc/default/jenkins

找到 JENKINS\_ARGS 行并将其更新如下:

JENKINS_ARGS="--webroot=/var/cache/jenkins/war --httpListenAddress=127.0.0.1 --httpPort=$HTTP_PORT -ajp13Port=$AJP_PORT"

请注意,–httpListenAddress=127.0.0.1 设置必须要么添加,要么修改。

然后继续重启 Jenkins 和 Nginx。

sudo service jenkins restart
sudo service nginx restart

现在您应该能够通过 HTTPS 访问您的域名,并且 Jenkins 站点将被安全地提供。

可选 — 更新 OAuth URL

如果您正在使用 GitHub 或其他 OAuth 插件进行身份验证,此时它可能已经失效。例如,当尝试访问 URL 时,您将收到一个类似 http://jenkins.domain.com:8080/securityRealm/finishLogin?code=random-string 的“无法打开页面”的错误。

为了解决这个问题,您需要更新 Jenkins 中的一些设置,包括 OAuth 插件设置。首先在 Jenkins GUI 中更新 Jenkins URL;它可以在 Jenkins -> 管理 Jenkins -> 配置系统 -> Jenkins 位置 菜单中找到。

将 Jenkins URL 更新为使用 HTTPS - https://jenkins.domain.com/

!Jenkins URL

接下来,更新您的 OAuth 设置与外部提供者。以下示例是针对 GitHub 的。在 GitHub 上,这可以在 设置 -> 应用程序 -> 开发人员应用程序 下找到。

应该有一个条目为 Jenkins。将 主页 URL授权回调 URL 更新以反映 HTTPS 设置。它可能类似于以下内容:

!GitHub 上的 Jenkins 设置;两个 URL 都使用了 https://

结论

唯一剩下的事情就是验证一切是否正确工作。如上所述,您现在应该能够通过新配置的 URL - jenkins.domain.com - 使用 HTTP 或 HTTPS 浏览。您应该被重定向到安全站点,并且应该看到一些站点信息,包括您新更新的 SSL 设置。如前所述,如果您没有通过 DNS 使用主机名,则您的重定向可能无法按预期工作。在这种情况下,您需要修改 Nginx 配置文件中的 proxy_pass 部分。文章来源地址https://www.toymoban.com/news/detail-855310.html

到了这里,关于如何配置 Nginx 作为 Jenkins 的反向代理并启用 SSL 加密的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 如何使用宝塔面板配置Nginx反向代理WebSocket(wss)

    本章教程,主要介绍一下在宝塔面板中如何配置websocket wss的具体过程。 目录 一、添加站点 二、申请证书 三、配置代理  1、增加配置内容

    2024年02月21日
    浏览(52)
  • 使用Nginx作为反向代理服务器在Linux中的最佳实践

    在Linux环境下,Nginx因其高效性能、稳定性以及丰富的功能集而广泛用于作为反向代理服务器。以下是在Linux中使用Nginx作为反向代理服务器的最佳实践: 1. 安装与配置 首先,确保你的Linux发行版已经安装了Nginx。大多数Linux发行版都提供了Nginx的包管理工具。例如,在基于Deb

    2024年01月17日
    浏览(46)
  • 拓展操作(四) 使用nginx反向代理jenkins

    让清单成为一种习惯 互联网时代的变革,不再是简单的开发部署上线,持续,正确,安全地把事情做好尤其重要;把事情做好的前提是做一个可量化可执行的清单,让工程师就可以操作的清单而不是专家才能操作: 设定检查点 根据节点执行检查程序 操作确认或边读边做 二

    2024年01月18日
    浏览(53)
  • 具有公网IP的服务器作为代理服务器,并使用Nginx将内网服务器反向代理

    在代理服务器上安装Nginx。如果您正在使用Linux操作系统,则可以使用包管理器来安装Nginx。例如,如果您使用的是Ubuntu,可以使用以下命令安装: 配置Nginx以将HTTP和HTTPS请求转发到内部服务器。打开Nginx的主配置文件/etc/nginx/nginx.conf,并在http块中添加以下代码: 注意: 将

    2024年01月25日
    浏览(51)
  • Nginx搭建Https反向代理,使用阿里云免费SSL证书 - Docker

    没有docker需提前安装docker,不知怎么安装的请自行百度。 1、拉取镜像 2、去阿里云或者其他云服务提供商申请免费证书,申请到之后下载下来,上传到服务器 把证书上传到ssl目录下面,下面是ssl的目录结构 /root/nginx/ssl 和上传的证书有两个文件一个 .key 一个 .pem 进入nginx-pr

    2024年02月09日
    浏览(98)
  • linux环境下docker中搭建 jenkins 及自定义访问路径,利用nginx反向代理

    前两天发布了完整的 linux服务器上Docker中安装jenkins 在实际的开发中,可能我们并不能直接开放8081或者8080端口给jenkins使用,常常是通过nginx方向代理来实现的,这里我们来配置一下。 如果你还没有安装 可以参考我这篇文章 linux服务器上Docker中安装jenkins 看到目录: 创建一个

    2024年02月16日
    浏览(56)
  • Nextcloud 集成 onlyoffice 配置 apache 反向 SSL 反向代理填坑

    onlyoffice nextcloud Apache  反向代理 nginx Error while downloading the document file to be converted 一台服务器设备安装了很多 docker 服务,包括 nextcloud 和 onlyoffice 和 apache。nextcloud、onlyoffice 服务默认使用 10001 和 10002 端口映射到两个服务的 80 端口。直接访问是通过 80 端口访问的,没有 SSL 加

    2024年01月21日
    浏览(48)
  • Nginx反向代理 配置实例

    介绍: 反向代理,其实客户端对代理是无感知的,因为客户端不需要任何配置就可以访问。 我们只 需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,在返 回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理

    2024年02月15日
    浏览(40)
  • nginx反向代理配置

    客户端对代理是无感知的,只需将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,再返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器IP地址 浏览器访问 www.123.com ,访问nginx的地

    2024年02月17日
    浏览(42)
  • Nginx-反向代理(配置教程)

     反向代理的作用 1、解决网站服务器对外可见的问题、私密性、安全性 2、路由功能:根据用户请求的URI调度到对应功能的节点处理请求 3、负载均衡:将用户的请求,通过调度算法挑选一台合适的节点处理请求 4、动静分离:根据用户请求的URI进行区分,将动态资源调度到应

    2024年02月13日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包