gpt4 book ai didi

apache - 使用 Apache 和 mod_proxy_ajp 提供静态 Jenkins 内容

转载 作者:行者123 更新时间:2023-12-02 18:05:26 25 4
gpt4 key购买 nike

环境:

  1. 新手用户(就是我)了解所有提到的要点
  2. CentOS 6.4 x86_64
  3. OpenJDK 1.7.0_65
  4. Apache httpd 2.2.15 + mod_ssl 2.2.15 - 使用以下方式充当代理mod_proxy_ajp,没有其他网络应用
  5. Jenkins 1.562 - 仅在 ajp 端口 8009 上运行,无 Web 前缀

我能够访问 URL https://host/我看到了 Jenkins 用户界面。[我没有添加AllowEncodedSlashes NoDecode , ProxyRequests Offnocanon ,但它似乎有效......但对于这些的重要性,我将搜索/问另一个问题。]

这是我添加到 /etc/httpd/conf.d/ssl.conf 的唯一一行(就在 </VirtualHost><VirtualHost _default_:443> 匹配之前):

ProxyPass / ajp://localhost:8009/

我的印象是,在 Jenkins 前面使用 Apache httpd 意味着

  1. 用于处理远程连接部分的 native 二进制文件(而不是 Java 字节码)
  2. 能够在不增加 Jenkins 服务器进程负担的情况下提供静态内容(图像、构建工件、控制台日志)

如果这种理解是正确的,我正在寻找 Apache httpd 配置规则,这些规则将使 Apache httpd 能够从 Jenkins 提供静态内容。我已经尝试过了:

ProxyPass /static !

DocumentRoot "/var/cache/jenkins/war"

但这会导致一个不寻常的页面(很难识别为 Jenkins ...我没有测试链接)。当我启用 Jenkins 的访问日志(通过 /etc/sysconfig/jenkins )时,会出现这样的条目(仅在下面复制摘录):

/static/6a3788e2/scripts/yui
/static/6a3788e2/css/
/adjuncts/6a3788e2/lib/layout/breadcrumbs.css

当 Jenkins 服务重新启动时,会显示不同的文本。我们如何配置 Apache httpd 来发送静态内容?

我还尝试在默认 HTTP 连接器端口 8080(即没有 mod_proxy_ajp)上的 tomcat(通过 yum 部署的 tomcat6 包)上托管 jenkins.war。每次重启tomcat,static后面的URL元素不同。

PS:没有足够的积分来创建标签 mod_proxy_ajp,请使用 mod_proxy 代替。不过,我可以提供 50 个积分的赏金。如果您认为为此付出了真正的努力,请对该问题投票。

最佳答案

您想要使用 ProxyPassMatch 而不是 ProxyPass,如下所示:

ProxyPassMatch ^/(?!static/) ajp://localhost:8009/

这应该仅代理不在/static 中的内容。请注意,您可能需要为静态内容设置 Web 根目录(但首先,您可能需要检查它是否有效)。

关于apache - 使用 Apache 和 mod_proxy_ajp 提供静态 Jenkins 内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25679350/

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