通常,VirtualHost 的最佳位置是站点可用文件夹中的一个新文件。prfixed 带有100-
.
所以像sites-available/100-443-myproject.example.com
.
这样,当您使用ae2ensite
anda2dissite
命令时,您将拥有默认和myproject.example.com
in 网站列表来启用或禁用。
000
是默认虚拟主机的保留编号,因为 apache 按字母顺序从启用站点的目录中读取文件,并且默认虚拟主机应该是第一个(默认虚拟主机捕获所有格式错误的主机 HTTP 标头,当没有VirtualHost
ServerName
匹配时)。
如果您的 VirtualHost 用于端口 80,您将不得不使用<VirtualHost *:80>
配置指令(或者<VirtualHost <my IP>:80>
,取决于NameVirtualHost
设置)。如果您的 VirtualHost 用于 SSL 端口,并且是您的情况,您将必须使用<VirtualHost *:443>
,并且您必须确保a2ensite
该a2dissite
Virtualhost 是唯一定义的启用 SSL 的 VirtualHost(因此不应启用 ssl-default)。
使用端口 80,该ServerName
指令足以让 apache 决定应该采用哪个 VirtualHost。对于端口 443 和 SSL,这还不够,因为 SSL 协商是在 Host 标头/ServerName
可以匹配之前进行的。因此,多个 SSL Vh 必须使用不同的端口或使用此处描述的新 SNI 系统,例如。
现在,AllowOverride
您不需要将其放在主配置中(但您可以使用/etc/apache2/conf.d
目录来存储此类所有虚拟主机共享的配置内容)。您的 VirtualHost 可以包含足够的指令,例如:
<Virtualhost (....)
ServerName (...)
(...)
<Directory />
# Forbid .htaccess for all the filesystem directory tree
AllowOverride None
</Directory>
<Directory /path/to/somewhere>
# I am mad and I like slow apache server
# So I want to allow .htaccess files
# Instead of putting all the content of this .htaccess right here
# in a Directory section
AllowOverride All
</Directory>
</VirtualHost>