osx 10.6 上多个基于端口的 apache vhost 无法正确解析

osx 10.6 上多个基于端口的 apache vhost 无法正确解析

我的本地 Mac 上有几个开发网站的本地版本,并且想要通过 vhosts 从浏览器访问它们,并且不时使用实时(网络)版本。

我读过许多人通过更改 URL 来做类似的事情,并让 Apache 监听唯一的 URL 以从本地位置提供服务的例子。我一直使用相同的URL,但是端口不同,虽然它可以在 Windows 上无缝运行,但我无法让它在 Mac 上运行。

(假设)我有两个网站:

  1. amazingwebsite.com
  2. facebookiller.org

Listen *:8080我想使用相同的 URL 访问本地版本,通过启用浏览器的代理(单击一次),我已将其设置为 8080。apache在 httpd.conf 中设置。

在 httpd-vhosts.conf 中(其中加载)我有:

NameVirtualHost *:8080

<VirtualHost *:8080>
    ServerAdmin [email protected]
    ServerName amazingwebsite.com
    ServerAlias www.amazingwebsite.com
    DocumentRoot "/Users/username/Development/Projects/amazingwebsite"

    <Directory "/Users/username/Development/Projects/amazingwebsite/">
        Options Includes Indexes Multiviews
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>

</VirtualHost>

“facebookkiller.org”虚拟主机基本相同 - 只是本地位置不同。

我的/private/etc/hosts现在设置为:

##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting.  Do not change this entry.
##
127.0.0.1   localhost
255.255.255.255 broadcasthost
::1             localhost 
fe80::1%lo0 localhost

127.0.0.1   amazingwebsite.com
127.0.0.1   facebookkiller.org

并在 apache 重新启动(关闭/打开网络共享)后,apachectl -S报告:

VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
*:8080                 is a NameVirtualHost
         default server amazingwebsite.com (/private/etc/apache2/other/httpd-vhosts.conf:4)
         port 8080 namevhost amazingwebsite.com (/private/etc/apache2/other/httpd-vhosts.conf:4)
         port 8080 namevhost facebookkiller.org (/private/etc/apache2/other/httpd-vhosts.conf:19)
Syntax OK

我觉得还不错。

行为?:

  • amazingwebsite.com:8080 => 本地安装 (正确的
  • www.amazingwebsite.com:8080 => 超时(不正确)
  • amazingwebsite.com => 很快就无法连接,浏览器找不到 - (不正确)
  • www.amazingwebsite.com => 转至网络版 (正确的
  • facebookkiller.org:8080 => 本地安装 (正确的
  • www.facebookkiller.org:8080 => 超时(不正确)
  • facebookkiller.com => 浏览器无法找到(不正确)
  • www.facebookkiller.com => 转至网络版 (正确的

因此我的 ServerAlias 不起作用,或者我的 hosts 文件有问题 - 或者两者兼而有之!

我已经花了很长时间了,真的需要一些帮助——谢谢。

答案1

虚拟主机正在运行,您没有正确编写本地 /etc/hosts。发生的情况是,您的超时然后工作是因为“www。”查找很可能会导致真正的 DNS CNAME 指针返回到非 www。版本。

127.0.0.1   localhost google.com www.google.com amazon.com www.amazon.com

这就是您使用 hosts 文件的方式 - 一次列出一个 IP,所有别名都在同一行,并且您必须列出所需的所有子域,www。例如,这将把流量发送到您的本地 Apache 实例。

相关内容