Apache2:当我不需要时,IP 会呈现 vhost 吗?

Apache2:当我不需要时,IP 会呈现 vhost 吗?

我有一个带有多个虚拟主机的 Apache2 服务器设置,一切运行正常。导航到我的 IP 会呈现其中一个虚拟主机 ( /etc/apache2/sites-enabled/main_site.com),这是我迄今为止想要的。

现在我想让 ip 转到默认 vhost /etc/apache2/sites-enabled/default,但我记不住在哪里更改它。我假设 中有一些指令/etc/apache2/apache2.conf,但我什么也没找到。

任何帮助,将不胜感激。


➜ /etc/apache2: ls sites-enabled/  
default                 micro_main_1.com          micro_main_2.com            main.com
sub1.main.com           micro_main_3.biz          micro_main_4.com            main_site.com
sub1.main2.com          micro_main_5.biz     

➜ /etc/apache2/sites-enabled: cat default
NameVirtualHost *
<VirtualHost *>
    ServerAdmin webmaster@localhost

    DocumentRoot /var/www/
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /var/www/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>

    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>

    ErrorLog /var/log/apache2/error.log

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

    CustomLog /var/log/apache2/access.log combined
    ServerSignature Email

    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>

/etc/apache2/apache2.conf=>https://gist.github.com/1017147


➜ /etc/apache2/sites-enabled: cat main_site.com
<VirtualHost *:80>
    ServerAdmin admin@main_site.com
    ServerName main_site.com
    ServerAlias www.main_site.com

        # ...

</VirtualHost>

答案1

你的 /etc/apache2/apache2.conf 中有:

# Include the virtual host configurations:
Include /etc/apache2/sites-enabled/

ServerName main_site
DocumentRoot /var/www

NameVirtualHost *:80

将 NameVirtualHost 移至包含虚拟主机配置之前。它应该如下所示:

NameVirtualHost *:80

# Include the virtual host configurations:
Include /etc/apache2/sites-enabled/

另外,您不需要默认虚拟主机文件中的 NameVirtualHost *。

答案2

第一个加载了该 IP:Port 对的 VirtualHost 将用于呈现不包含主机标头的请求。确保您的虚拟主机清楚地使用 IP 地址或 * 和端口号。现在,我相信 sites-enabled 中的文件是按字母顺序加载的,这意味着默认文件应优先于 main_site 文件。

发布您的 VirtualHost,我们来看一下。

答案3

您可能有一个ServerNameServerAlias指令来指定中的IP地址main_site,或者<VirtualHost>块专门指定要监听的IP(而不是*:80;这可能完全禁用基于名称的虚拟托管)。

如果没有匹配的ServerNameServerAlias,并且所有虚拟主机都设置为与您的NameVirtualHost指令匹配的侦听器规范,则第一个要加载的虚拟主机(按字母顺序)将处理请求。这不会发生,因此这两个东西之一一定是关闭的。

答案4

将您想要默认响应的站点放在列表的首位。

在 Ubuntu/Debian 上:

rm /etc/apache2/sites-enabled/default
ln -s /etc/apache2/sites-available/default /etc/apache2/sites-enabled/00default

(或者另一个网站,如果您希望它成为默认网站)

相关内容