Apache反向代理跳转时如何禁用子域名显示
Apache反向代理跳转时如何禁用子域名显示
看起来你已经在主域名(运行Next.js的服务器)上搭好了Apache反向代理,想把主域名的/blog路径映射到子域名的博客服务,但跳转时总会暴露子域名对吧?我来帮你把配置调整好解决这个问题。
先理下你的场景:主域名跑Next.js,博客因为安全原因部署在单独服务器的子域名上,现在用Apache的ProxyPass把主域名的/blog路径代理过去,但跳转时子域名会跑出来,这大概率是ProxyPassReverse配置不完整或者没处理响应头导致的。
给你修正后的完整http-vhost.conf配置片段,重点看代理相关的部分:
<VirtualHost *:443> ServerAdmin webmaster@localhost UserDir disabled ServerName example.com ServerAlias example.com ScriptAlias /cgi-bin/ /var/www/cgi-bin/ CustomLog /var/log/httpd/homedir.log homedir CustomLog /var/log/httpd/access_log combined ErrorLog /var/log/httpd/error_log ProxyPreserveHost On # 代理主域名的/blog路径到子域名的博客服务 ProxyPass "/blog" "https://blog.example.com/blog" # 关键:完整配置ProxyPassReverse,让Apache重写响应头里的子域名 ProxyPassReverse "/blog" "https://blog.example.com/blog" # 处理Cookie,避免子域名信息泄露到主域名会话中 ProxyPassReverseCookieDomain blog.example.com example.com ProxyPassReverseCookiePath "/blog" "/blog" </VirtualHost>
我给你划几个重点:
- 你的原配置里
ProxyPassReverse没写完,必须和ProxyPass的目标地址完全匹配,这样Apache才能自动把响应里的Location头(比如跳转链接)从子域名路径替换成主域名的/blog路径,就不会暴露子域名了。 ProxyPassReverseCookieDomain:把博客服务在子域名下设置的Cookie,域名替换为主域名,既保证Cookie能正常使用,又不会带出子域名信息。ProxyPassReverseCookiePath:同步Cookie的路径规则,避免会话混乱。
另外还要注意:你的博客服务所在的子域名服务器,绝对不能有强制跳转到子域名本身的配置(比如Redirect或者RewriteRule),不然会直接绕过Apache的反向代理重写,又把子域名暴露出来了。
备注:内容来源于stack exchange,提问作者high developer
相关产品推荐
相关产品推荐

