我想使用 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 服务器的任何机器的反向代理。