具有一个IP地址的Apache多子域

Jon*_*osi 21 apache subdomain vhosts

可能有人问过,但我找不到直接答案,或者我找不到的答案.

我有一个域mydomain.com,解析为IP; 我们称之为8.8.8.8.DNS设置还将两个子域指向具有A记录的IP地址.这些都是dev.mydomain.comstaging.mydomain.com.两者都有一个指向8.8.8.8的A记录.

在服务器(8.8.8.8)上,我有两个虚拟主机文件.这些如下:

staging.mydomain.com.conf

<VirtualHost *:80>
    ServerName  staging.mydomain.com
    DocumentRoot /var/www/html/mydomain.com/staging/
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

和...

dev.mydomain.com.conf

<VirtualHost *:80>
    ServerName  dev.mydomain.com
    DocumentRoot /var/www/html/mydomain.com/dev/
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

问题是:

无论我访问http://staging.mydomain.com还是http://dev.mydomain.com,我总是登陆staging.mydomain.com(Apache提供这些文件).

我重新启动了Apache甚至服务器.如果我更改.conf文件的顺序,以便dev是第一个,我总是看到它.任何建议都会非常感激.谢谢!


更新

我发现自己又回到了这个问题!如果您知道语法正确,则可能是一个错误的符号链接.删除它并重新创建,重新启动之间的apache.我刚刚做了这个,它解决了几个小时的头疼.在CentOS您可以检查您的虚拟主机提供与httpd -S

更新2

当虚拟主机的apache 日志文件不存在或不可写时,我也发现存在此问题.

Ket*_*ola 27

听起来你需要在配置中添加NameVirtualHost指令.

NameVirtualHost         *:80
Run Code Online (Sandbox Code Playgroud)

在某些情况下,Apache可能无法*:80正确处理VirtualHost.在这些情况下,您应该将VirtualHosts直接映射到特定的IP上.

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>
Run Code Online (Sandbox Code Playgroud)

您还可以运行apachectl -t -D DUMP_VHOSTS以查看Apache如何解析VirtualHost配置.

更新:如评论中所述,通常您可以使用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>
Run Code Online (Sandbox Code Playgroud)

  • 我有一个类似的问题...`apachectl -t -D DUMP_VHOSTS`命令是告诉所有:`[Mon May 20 23:51:08 2013] [warn] _default_ VirtualHost在端口80上重叠,第一个优先级为` .添加`NameVirtualHost*:80`解决了它 (3认同)