为什么我有一个用于提取默认域内容的 VirtualHost 域?

为什么我有一个用于提取默认域内容的 VirtualHost 域?

在默认主机为http://JonathansCorner.com,我正在尝试设置 VirtualHosthttp://media.pragmatometer.com。但是,Apache2 的 sites-enabled 目录中的两个注册域均未从目标服务器拉取数据。

VirtualHost 定义如下:

<VirtualHost *:80>
    ServerName media.pragmatometer.com
    ServerAlias media.ccachicago.pragmatometer.com
    DocumentRoot /home/jonathan/ccachicago/media
    <Directory "/home/jonathan/ccachicago/media/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        #Order deny,allow
        #Deny from all
        #Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>
    ServerAdmin [email protected]
</VirtualHost>

我还应该添加其他内容吗?我检查了一下,其他 VirtualHosts 都没有回答http://media.pragmatometer.com或者http://media.ccachicago.pragmatometer.com

我可以添加什么以便前面提到的 URL 可以从上面的 DocumentRoot 中提取?

- 编辑 -

默认VirtualHost的配置如下:

<VirtualHost *:80>
ServerAdmin [email protected]

DocumentRoot /home/jonathan/mirror
<Directory />
    Options FollowSymLinks
    AllowOverride None
</Directory>
<Directory /home/jonathan/>
    Options ExecCGI Indexes FollowSymLinks MultiViews
    AllowOverride None
    Order allow,deny
    allow from all
</Directory>

DirectoryIndex index.cgi index.html
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
    AllowOverride None
    Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
    Order allow,deny
    Allow from all
</Directory>

ErrorDocument 404 /missing.html
ErrorDocument 500 /servererror.html
ErrorLog ${APACHE_LOG_DIR}/error.log

# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn

CustomLog ${APACHE_LOG_DIR}/access.log combined

Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
    Options Indexes MultiViews FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all
    Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>

</VirtualHost>

答案1

请尝试以下基于 IP 的虚拟主机配置

NameVirtualHost IP-ADDR:80

<VirtualHost IP-ADDR:80>
ServerName first.domain.com
...
...
</VirtualHost>
<VirtualHost IP-ADDR:80>
ServerName second.domain.com
...
...
</VirtualHost>

答案2

最佳匹配虚拟主机集的基于名称的虚拟主机将按照它们在配置中出现的顺序进行处理。将使用第一个匹配的 ServerName 或 ServerAlias,通配符的优先级没有差异(ServerName 与 ServerAlias 的优先级也没有差异)。

如果 VirtualHost 未指定 ServerName,则服务器名称将从基本服务器配置中继承。如果未全局指定服务器名称,则在启动时通过第一个侦听地址的反向 DNS 解析检测服务器名称。无论哪种情况,此继承的服务器名称都会影响基于名称的虚拟主机解析,因此最好始终在每个基于名称的虚拟主机中明确列出 ServerName。

相关内容