我经常使用 Apache 通过 ProxyPass 和 ProxyPassReverse 反向代理到其他服务器。我一直通过顶级文件夹执行此操作。但现在我需要将网站的主页放在新的 CMS 服务器上。
仅反向代理主页(对于请求:GET / HTTP / 1.1)而不影响每个请求的最佳方法是什么?
我想我可以用 ! 指令列出服务器上的每个目录和顶级页面。但肯定有更好的方法。
非常感谢大家的帮助。
答案1
ProxyPass 指令按第一次匹配的顺序进行处理,只需将 CMS 中的一个列在最后即可。例如
ProxyPass /app1 http://app1.example.org/app1
ProxyPassReverse /app1 http://app1.example.org/app1
ProxyPass /app2 http://app2.example.org/app2
ProxyPassReverse /app2 http://app2.example.org/app2
ProxyPass / http://cms.example.org/
ProxyPassReverse / http://cms.example.org/
或者希望有一个运行良好的 CMS,其中只有主登陆页面位于根目录中,而所有脚本、图像和其他内容都位于适当的子目录中:
# Redirect requests to www.example.org/ to www.example.org/index.html
RewriteRule ^/$ /index.html
ProxyPass /index.html http://cms.example.org/index.html
ProxyPass /css http://cms.example.org/css
ProxyPassReverse /css http://cms.example.org/css
ProxyPass /img http://cms.example.org/img
ProxyPassReverse /img http://cms.example.org/img