我正在尝试使用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将继续工作几周。这要求太多吗?
提前致谢。
答案 0 :(得分: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/
等