我有一个带有多个虚拟主机的 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
您可能有一个ServerName
或ServerAlias
指令来指定中的IP地址main_site
,或者<VirtualHost>
块专门指定要监听的IP(而不是*:80
;这可能完全禁用基于名称的虚拟托管)。
如果没有匹配的ServerName
或ServerAlias
,并且所有虚拟主机都设置为与您的NameVirtualHost
指令匹配的侦听器规范,则第一个要加载的虚拟主机(按字母顺序)将处理请求。这不会发生,因此这两个东西之一一定是关闭的。
答案4
将您想要默认响应的站点放在列表的首位。
在 Ubuntu/Debian 上:
rm /etc/apache2/sites-enabled/default
ln -s /etc/apache2/sites-available/default /etc/apache2/sites-enabled/00default
(或者另一个网站,如果您希望它成为默认网站)