环境:
我可以访问网址https://host/
,我看到了jenkins用户界面。
[我没有添加AllowEncodedSlashes NoDecode
,ProxyRequests Off
或nocanon
,但它似乎有效...但对于那些重要性,我会搜索/提出另一个问题。]
这是我添加到/etc/httpd/conf.d/ssl.conf
的唯一一行(就在与</VirtualHost>
匹配的<VirtualHost _default_:443>
之前):
ProxyPass / ajp://localhost:8009/
我的印象是,使用Apache httpd面向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个学分的赏金。如果您认为有真正的努力,请将问题投票。
答案 0 :(得分:0)
您希望使用ProxyPassMatch
代替ProxyPass
,例如:
ProxyPassMatch ^/(?!static/) ajp://localhost:8009/
这应该只代理不在/ static中的东西。请注意,您可能需要为静态内容设置Web根目录(但首先,您可能需要检查它是否有效)。
答案 1 :(得分:0)
正如我在对您的问题的评论中提到的,您建议的设置可能不会导致Jenkins的负载降低。
您可以通过配置Apache(或其他网络服务器,如ngix或代理,如squid)来减少Jenkins的负担,例如caching proxy。这可能(您将不得不测试)从jenkins中删除部分负载。但是,由于Jenkins默认情况下不会在未来的某个地方为工件请求设置过期日期,因此在将内容提供给客户端之前,代理仍然需要使用jenkins进行检查(希望返回304而不是完整文件)