Apache 反向代理替换响应内容里的域名

Apache 反向代理替换响应内容里的域名

通过反向代理可以将请求转发给后端真实的服务器。
但是服务器响应内容可能直接返回原始的域名,导致浏览器请求绕过反向代理。

有些应用可能通过获取请求头里的 Host, X-Forwarded-Host, X-Forwarded-Server 变量来生成正确的响应内容。

但是有些应用可能不支持,导致浏览器请求绕过反向代理。

可以通过 Apache 的 ProxyPassReverse 防止重定向绕过反向代理。
然后通过 Apache 的 Substitute 模块改写响应内容,防止页面引用的元素绕过反向代理。
https://www.docs4dev.com/docs/zh/apache/2.4/reference/mod-mod_substitute.html

AddOutputFilterByType INFLATE;SUBSTITUTE;DEFLATE text/html text/plain text/xml application/xml
Substitute "s|origin.example.com/|www.example.com/|ni" 

如果原站没有备案信息,可以顺便在底部添加备案信息。

Substitute "s|</body>|<center><a href=\"http://beian.miit.gov.cn/\" rel=\"external nofollow noopener noreferrer\" target=\"_blank\">京ICP备XXXXXXXX号-1</a></center> </body>|"