【问题标题】:ServerAlias on OSX Mountain Lion webserver not resolvingOSX Mountain Lion 网络服务器上的 ServerAlias 无法解析
【发布时间】:2012-08-06 12:02:04
【问题描述】:

我遇到了 ServerAliases 无法解析到相应服务器的问题。

我的主机文件是这样设置的(这是尝试设置 APE 的一部分,所以请原谅无关代码):

127.0.0.1   localhost
255.255.255.255 broadcasthost
::1             localhost 
fe80::1%lo0 localhost

127.0.0.1 testy.local
127.0.0.1 testsite.local
127.0.0.1 ape-test.local
127.0.0.1 chickens.cluck.com
127.0.0.1 ape.ape-test.local
127.0.0.1 ape2.ape-test.local

还有 httpd-vhosts.conf:

NameVirtualHost *:80

<VirtualHost *:80>
        ServerName ape-test.local
        ServerAlias ape.ape-test.local
        ServerAlias test.ape-test.local
        ServerAlias *.ape.ape-test.local

        DocumentRoot "/Library/WebServer/Documents/"
</VirtualHost>

<VirtualHost *:80>
    ServerName testy.local
    ServerAlias testy
    ServerAlias fish.local
    DocumentRoot "/Users/myusername/Sites/testsite"
    <Directory /Users/myusername/Sites/testsite/>
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

在 httpd.conf 中启用了虚拟主机,并且 testy.local 解析到正确的目录。但是使用 'testy/' 或 'fish.local' 将无法解决。

似乎也没有任何内容写入错误日志或控制台,并且运行 sudo bash -x /usr/sbin/apachectl -k start 未显示任何错误。 运行httpd -S 也没有发现任何问题:

VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
*:80                   is a NameVirtualHost
         default server ape-test.local (/private/etc/apache2/extra/httpd-vhosts.conf:44)
         port 80 namevhost ape-test.local (/private/etc/apache2/extra/httpd-vhosts.conf:44)
         port 80 namevhost testy.local (/private/etc/apache2/extra/httpd-vhosts.conf:53)
Syntax OK

所以看起来只是 ServerAlias 不起作用。

有人有什么想法吗?

【问题讨论】:

    标签: macos virtualhost apache httpd.conf


    【解决方案1】:

    通过查看您的主机文件,您似乎没有在主机文件中提供“testy”或“fish.local”。您只需要在您的主机文件中输入这两个域,然后您就应该准备好了。

    您需要像我在下面那样添加它们,

    127.0.0.1   localhost
    255.255.255.255 broadcasthost
    ::1             localhost 
    fe80::1%lo0 localhost
    
    127.0.0.1 fish.local
    127.0.0.1 testy
    127.0.0.1 testy.local
    127.0.0.1 testsite.local
    127.0.0.1 ape-test.local
    127.0.0.1 chickens.cluck.com
    127.0.0.1 ape.ape-test.local
    127.0.0.1 ape2.ape-test.local
    

    希望这会有所帮助。

    【讨论】:

    • @donnyB 很高兴知道你已经成功了。这解决了你的问题吗?如果是,请将我的答案作为正确答案:)
    • 感谢@humayun,这是我的一个误解。我正在关注 APE 设置教程,其中包含 ServerAlias *.ape.yourdomain.com 行。由于 asterix 运算符在 hosts 文件中没有此功能,我认为这是一种同时为多个 url 起别名的方法。那么我假设每个 url 都必须单独列在 hosts 文件中?
    • 是的,你不能在主机文件中有通配符条目,这就是为什么你需要单独添加每个条目,或者你可以像这样添加,127.0.0.1 fish.local testy testy.local testsite.local
    • 换句话说,使用 APE 的一个前提是'x.server.foo.com 必须解析到与 server.foo.com 相同的 IP 以获取任何 DNS 合法值 x'。在 Mountain Lion 上执行此操作以在 hosts 文件中列出整个堆 url 的唯一方法是吗?
    • 如果您使用的是主机文件,那么是的,这是唯一的方法。但是,如果您有时间,您也可以在 OSX Mountain Lion 上安装和设置任何开源本地 DNS 服务器。实际上,将域/子域定向到它们各自的 IP 是 DNS 的工作。主机文件只是让机器知道域条目的正确 IP 的本地快速解决方案。所以我们实际上是通过使用主机文件在这里传递 DNS 工作。因此,如果您确实需要将“x.server.foo.com”设置为某个特定 IP 并且您希望它永久存在,那么请安装 DNS。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-19
    • 1970-01-01
    • 2013-12-20
    • 2012-09-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多