Apache的多个子域名使用一个IP地址(Apache Multiple Sub Domains W

2019-07-05 00:56发布

这可能已经问,但我找不到一个直接的答案,或者我发现那些不工作。

我有一个域mydomain.com中 ,解析到IP; 让我们把它8.8.8.8。 DNS设置还点二子域到该IP地址与A记录。 这些都是dev.mydomain.comstaging.mydomain.com。 这两个有A记录指向8.8.8.8。

在服务器(8.8.8.8)我有两个虚拟主机文件。 这些措施如下:

staging.mydomain.com.conf

<VirtualHost *:80>
    ServerName  staging.mydomain.com
    DocumentRoot /var/www/html/mydomain.com/staging/
</VirtualHost>

和...

dev.mydomain.com.conf

<VirtualHost *:80>
    ServerName  dev.mydomain.com
    DocumentRoot /var/www/html/mydomain.com/dev/
</VirtualHost>

问题是:

不管我是否参观http://staging.mydomain.comhttp://dev.mydomain.com ,我总是降落在staging.mydomain.com(Apache在提供这些文件)。

我已经重新启动Apache和甚至服务器。 如果我改变了conf文件的顺序,使开发是第一,我总是看到。 任何建议,将如此赞赏。 谢谢!


更新

我发现自己回到了这个问题了! 如果你知道你的语法是正确的,你可能有一个坏的符号链接。 删除它,然后再重新创建,在两者之间重启动Apache。 我只是做了这一点,它解决了头部划伤小时。 在CentOS ,你可以检查你的虚拟主机提供httpd -S

更新2

我也发现了这个问题,当不存在虚拟主机的Apache 日志文件,或者是不可写的存在。

Answer 1:

听起来像是你需要添加NameVirtualHost指令到您的配置。

NameVirtualHost         *:80

在某些情况下Apache可能无法处理*:80正确VirtualHosts。 在这种情况下,你应该在特定的IP地址直接映射VirtualHosts。

NameVirtualHost         8.8.8.8:80

<VirtualHost 8.8.8.8:80>
    ServerName  staging.mydomain.com
    ServerAlias stage.mydomain.com
    DocumentRoot /var/www/html/mydomain.com/staging/
</VirtualHost>

<VirtualHost 8.8.8.8:80>
    ServerName  dev.mydomain.com
    ServerAlias development.mydomain.com
    DocumentRoot /var/www/html/mydomain.com/dev/
</VirtualHost>

您还可以运行apachectl -t -D DUMP_VHOSTS看到Apache如何解析虚拟主机的配置。

更新:由于在评论中提到的,通常你可以只使用NameVirtualHost *:80 。 所以大部分的时间,你可以配置虚拟主机如下。

NameVirtualHost         *:80

<VirtualHost *:80>
    ServerName  staging.mydomain.com
    ServerAlias stage.mydomain.com
    DocumentRoot /var/www/html/mydomain.com/staging/
</VirtualHost>

<VirtualHost *:80>
    ServerName  dev.mydomain.com
    ServerAlias development.mydomain.com
    DocumentRoot /var/www/html/mydomain.com/dev/
</VirtualHost>


文章来源: Apache Multiple Sub Domains With One IP Address