1

我正在尝试使用 Apache httpd 为多个 Nexus 和 Jenkins CI 服务器设置前端(反向代理),需要一些帮助。我们有类似的网址 -

abc.internal.net:8080/

def.internal.net:9000/jenkins/

ghi.internal.net:8080/jenkins/

jkl.internal.net:8081/nexus/

foo.internal.net/nexus/

我希望这些中的每一个都设置在 FE 反向代理后面,以便拥有类似的东西 -

scm.internal.net/abc-jenkins/

scm.internal.net/def-jenkins/

scm.internal.net/ghi-jenkins/

scm.internal.net/jkl-nexus/

scm.internal.net/foo-nexus/

一些服务使用根上下文。这些可以被强制进入任意的网络环境吗?

我对 Apache httpd 的了解非常有限,所以一些真实的配置会很有帮助。这些服务中的大多数都需要在响应中修复 URL、内容和 CSS。如果可以在不更改这些服务正在运行的服务器上的现有 Web 上下文的情况下做到这一点,那就太棒了。

此外,我需要软着陆这些更改,以便随着开发人员和自动化过渡到新方案,旧 URL 继续工作几周。这是要求太多了吗?

提前致谢。

4

1 回答 1

0

使用ProxyPassMatch,您可以尝试:

ProxyPassMatch /([^-]+)-(.*)$ http://$1.internal.net:9000/$2

但这仅说明不是以 root 身份运行且在端口 9000 上运行的那些。由于 root 和端口似乎完全是任意的,您可能只需要枚举每个:

ProxyPass /abc-jenkins/ http://abc.internal.net:8080/
ProxyPassReverse /abc-jenkins/ http://abc.internal.net:8080/

ProxyPass /def-jenkins/ http://def.internal.net:9000/jenkins/
ProxyPassReverse /def-jenkins/ http://def.internal.net:9000/jenkins/

ProxyPass /ghi-jenkins/ http://ghi.internal.net:8080/jenkins/
ProxyPassReverse /ghi-jenkins/ http://ghi.internal.net:8080/jenkins/

ProxyPass /jkl-nexus/ http://jkl.internal.net:8081/nexus/
ProxyPassReverse /jkl-nexus/ http://jkl.internal.net:8081/nexus/

等等

于 2012-08-21T05:39:52.713 回答