Apache 上针对单个虚拟主机的反向代理

Apache 上针对单个虚拟主机的反向代理

前言:

我配置了一个具有多个虚拟主机的可公开访问的服务器。对一个虚拟主机的请求需要发送到后端服务器。所有其他请求都需要在本地处理。

问题:

一旦启用需要代理的网站,所有虚拟主机的请求都会传递到 ProxyPass 指令中指定的 IP 地址。当我尝试访问任何其他虚拟主机时,我都会从代理网站获取网页。禁用代理网站后,所有其他虚拟主机都会恢复正常运行并在本地提供服务。

配置:

我在可公开访问的服务器上为虚拟主机进行的配置:(其他虚拟主机是相同配置的副本)

<VirtualHost *:80>
  ServerName www.mainsite.com
  ServerAlias mainsite.com
  ServerAdmin [email protected]

  DirectoryIndex index.php
  DocumentRoot /var/www/mainsite.com

  <Directory />
    AllowOverride None
  </Directory>

  LogLevel info
  ErrorLog /var/log/mainsite.com_err.log
  CustomLog /var/log/mainsite.com_access.log combined
</VirtualHost>

我在可公开访问的服务器上为要代理的虚拟主机进行了以下配置:

<VirtualHost *:80>

  ServerName calendar.othersite.com
  ServerAdmin [email protected]

  ProxyRequests Off 

  <Location />
    ProxyPass http://192.168.0.1/
    ProxyPassReverse http://192.168.0.1/
  </Location>

  <Proxy>
   Order Allow,Deny
   Allow from all
  </Proxy>


  TransferLog /var/log/othersite.com_access.log
  ErrorLog /var/log/othersite.com_err.log
  CustomLog /var/log/othersite.com.log combined
  LogLevel debug
</VirtualHost>

答案1

尝试

sudo ln -s /etc/apache2/mods-available/proxy.load /etc/apache2/mods-enabled
sudo ln -s /etc/apache2/mods-available/proxy_http.load /etc/apache2/mods-enabled
sudo /etc/init.d/apache2 restart

相关内容