无法使用 Apache 的 mod_proxy 转发到虚拟机

无法使用 Apache 的 mod_proxy 转发到虚拟机

我想使用 mod_proxy 在我的手机上测试我在本地虚拟机上构建的网站。我的网络如下所示:

主持人:
IP 1:10.10.10.2
IP 2:10.211.55.2
OSX 10.8.2 / Apache 2.2.22
Parallels 8.0

虚拟机来宾:
IP:10.211.55.3
Win7 / IIS 7.5

电话:
IP:10.0.0.8
配置使用10.0.0.2:80作为代理
iPhone iOS 6.0.1

我已将以下内容插入http配置文件

ProxyRequests On
ProxyVia On

<Proxy *>
    Order deny,allow
    Deny from all
    Allow from 10.0.0
</Proxy>

<VirtualHost *:80>
    ServerName example.local 
    ServerAlias *.example.local
    ProxyRemote http://example.local/* http://10.211.55.3:80
    ErrorLog "/private/var/log/apache2/example-error_log"
    CustomLog "/private/var/log/apache2/example-access_log" common
</VirtualHost>

我的/etc/hosts(在主机 OSX 机器上)目前没有引用例子.local。之前我曾参考过/etc/hosts(在主机 OSX 计算机上)并且能够从主机上查看 IIS 客户机上的站点,没有任何问题。因此,我相信 IIS 客户机已正确配置为接受 HTTP 请求。

我能够通过手机查看托管在 Apache 上的网站,并且能够访问 BBC 的网站。如果没有在手机上配置代理,我就无法查看托管在 Apache 上的网站,但可以查看 BBC 的网站。因此,我相信手机配置正确。

剩下的就是配置 Apache。我已经用以下配置测试过了apachectl -t并且没有报告任何错误。我无法在日志文件 /var/log/example-error_log、/var/log/example-access_log、/var/log/error_log 和 /var/log/access_log 中看到任何报告的错误。

如果有人能给我指明正确的方向,我将不胜感激。

非常感谢,克里斯

答案1

作为参考,这是我解决这个问题的方法:

1) 在 LAN 上设置一个 DNS 服务器,该服务器是 example.local 的权威名称服务器。主机和电话都配置为使用此服务器作为其 DNS 服务器。

2)配置运行 Apache 的主机,该主机已经加载了 mod_proxy 和 mod_proxy*,方法是将以下内容添加到/etc/apache2/extra/httpd-vhosts.conf

<VirtualHost *:80>
  ProxyPreserveHost On
  ProxyPass / http://10.211.55.3/ retry=1 acquire=3000 timeout=600 Keepalive=On
  ProxyPassReverse / http://10.211.55.3/
  ServerName example.local
  ErrorLog "/private/var/log/apache2/example.local-error_log"
  CustomLog "/private/var/log/apache2/example.local-access_log" common
</VirtualHost>

该主机现在充当 LAN 上使用专门配置的 DNS 服务器的任何机器的反向代理。

相关内容