Apache 2.4下基于单域名通过子路径访问多IP独立Web服务器的虚拟主机配置方法咨询
Apache 2.4下基于单域名通过子路径访问多IP独立Web服务器的虚拟主机配置方法咨询
嘿,这个需求用Apache的反向代理功能就能完美解决,核心是用到mod_proxy和mod_proxy_http这两个模块,我给你一步步拆解配置步骤:
第一步:启用必要的Apache模块
首先得确保这两个代理模块已经开启,在终端里执行以下命令:
a2enmod proxy a2enmod proxy_http
执行完后重启Apache让配置生效:
# Debian/Ubuntu系统 systemctl restart apache2 # RHEL/CentOS系统 systemctl restart httpd
第二步:配置主域名的虚拟主机
找到你的Apache虚拟主机配置文件(一般在/etc/apache2/sites-available/mycompany.com.conf或/etc/httpd/conf.d/mycompany.com.conf),编辑这个文件,在<VirtualHost>块里添加反向代理规则,同时保留主站的根路径指向192.168.0.1:
<VirtualHost *:80> ServerName mycompany.com ServerAlias www.mycompany.com # 主站根路径转发到192.168.0.1 ProxyPass "/" "http://192.168.0.1/" ProxyPassReverse "/" "http://192.168.0.1/" # 销售部门子路径转发到192.168.0.2 ProxyPass "/sales" "http://192.168.0.2/" ProxyPassReverse "/sales" "http://192.168.0.2/" # 财务部门子路径转发到192.168.0.3 ProxyPass "/finance" "http://192.168.0.3/" ProxyPassReverse "/finance" "http://192.168.0.3/" # 生产部门子路径转发到192.168.0.4 ProxyPass "/manufacture" "http://192.168.0.4/" ProxyPassReverse "/manufacture" "http://192.168.0.4/" # 可选:如果后端服务器需要识别原始请求的Host头,添加这行 # ProxyPreserveHost On ErrorLog ${APACHE_LOG_DIR}/mycompany.com-error.log CustomLog ${APACHE_LOG_DIR}/mycompany.com-access.log combined </VirtualHost>
第三步:激活配置并验证
如果是Debian/Ubuntu系统,需要先激活这个虚拟主机配置:
a2ensite mycompany.com.conf
再次重启Apache后,就可以测试访问了:
- 访问
http://www.mycompany.com会指向192.168.0.1的主站 - 访问
http://www.mycompany.com/sales会转发到192.168.0.2的销售部门服务器 - 其他子路径以此类推
一些实用注意事项
- 确保前端Apache服务器能正常访问后端192.168.0.2/3/4的80端口(没有防火墙或安全组拦截)
- 如果后端页面里有绝对路径的资源(比如
/js/app.js),可能会出现路径错误,这时候可以让后端改用相对路径,或者额外配置mod_proxy_html模块来重写页面内的链接 - 要是需要HTTPS访问,只要把
<VirtualHost *:80>改成<VirtualHost *:443>,加上SSL证书相关配置(SSLCertificateFile等),代理规则保持不变即可
备注:内容来源于stack exchange,提问作者1kbyte
相关产品推荐
相关产品推荐

