Jenkins 资源根 URL 无法使用基于项目的矩阵身份验证 (404)

问题描述 投票:0回答:2

在专用机器上运行 Jenkins,使用 Haproxy 提供的 SSL。

Jenkins 在内部网络中运行,URL https://jenkins.company.comhttps://jenkins-static.company.com 设置为指向同一台机器。

来自 jenkins 教程的 Haproxy 设置(禁用 haproxy 并切换到直接 HTTP 并不能解决问题)。

使用“管理 Jenkins >> 系统”设置资源根 URL 时,所有工件 URL 都会转换为 https://jenkins-static.company.com/static-files/TOKEN/FILE_PATH 但始终尝试打开链接导致“哎呀!” 404页。

我无法在日志中找到任何相关信息。

为了使资源 URL 正常工作,我必须在基于项目的矩阵授权策略的全局设置中向“经过身份验证的用户”添加“作业/读取”权限。但这破坏了我的 Jenkins 实例的安全性,因此无法应用此解决方案。

jenkins authorization
2个回答
0
投票

1.仔细检查 Jenkins 中的资源根 URL 配置。

2.检查 HAProxy 配置以正确处理静态文件。

3.确保静态资源的文件权限正确。

4.检查 Jenkins 和 HAProxy 日志是否有 404 或令牌相关错误。

5.验证 OAuth 插件设置并检查禁用它是否可以解决问题。

6.查看 jenkins-static.company.com 跨域访问的 CORS 策略。

如果这些解决方案均不起作用,请尝试通过在不使用 HAProxy 的情况下提供静态文件或使用不同的反向代理来进一步隔离问题,以查看问题是否仍然存在。


0
投票

这里缺少一些信息,例如,404 页面返回的消息“到底”是什么。 例如,如果设置正确,尝试在没有任何路径和令牌的情况下访问资源根本身应该返回 HTTP ERROR 404 Jenkins 仅在此域上提供静态文件。
这里的重要区别是资源 URL 和 Jenkins URL 必须不同,如配置说明中所示:

资源根 URL 必须是 Jenkins URL 的有效替代选择,才能正确处理请求。
  • 必须设置Jenkins URL,并且必须与此资源根URL不同(实际上,需要不同的主机名)。
  • 设置后,Jenkins 将仅通过资源根 URL 提供资源 URL 请求。所有其他请求将获得 HTTP 404 Not Found 响应。
© www.soinside.com 2019 - 2024. All rights reserved.