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

标签 apache jenkins mod-proxy static-content

环境:

  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/

相关文章:

maven - 在哪里保存 Windows 上运行的 Jenkins 的 GPG key ?

Apache:ProxyPass max 参数无效

security - 为 Apache 配置 mod_proxy 以拒绝错误的域请求

linux - 安装Passenger + Passenger进程未启动

ruby-on-rails - 使用 apache 和 passenger 部署 Rails 应用程序后,显示页面不存在

jenkins - 如何在Jenkins中创建Python virtualenv?

Apache mod_proxy : forward secure websocket to non-secure

regex - .htaccess:阻止来 self 自己的域的虚假引荐来源网址

php - PHP 头函数的替代品

mysql - 无法连接到 jenkins 管道上的 mysql docker 容器