VirtualHost 匹配规则参考:虚拟主机匹配的深入讨论
VirtualHost 匹配规则较为复杂,在配置多站点时,尽量对VirtualHost 的IP采用同一写法。
VirtualHost 的IP采用通配符*。
默认站点用来接收非预期的站点请求。
在/etc/httpd/conf.d创建01_default.conf(确保01_default.conf排在其它配置文件前面)文件。在01_default.conf文件中配置默认站点。
01_default.conf内容如下:
<VirtualHost _default_:80>
DocumentRoot "/var/www/default/html"
ServerName localhost
VirtualHost>
<VirtualHost _default_:443>
DocumentRoot "/var/www/default/html"
ServerName localhost
SSLEngine on
SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite HIGH:3DES:!aNULL:!MD5:!SEED:!IDEA
SSLCertificateFile /etc/pki/tls/certs/localhost.crt
SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
VirtualHost>
<VirtualHost _default_:*>
DocumentRoot "/var/www/empty/html"
ServerName localhost
<LocationMatch ".*">
ErrorDocument 403 "<H1>403H1>"
ErrorDocument 404 "<H1>404H1>"
RewriteEngine On
RewriteRule ".*" "-" [R=404]
LocationMatch>
VirtualHost>
mod_ssl时,自动生成了默认的localhost证书 /etc/pki/tls/certs/localhost.crt、/etc/pki/tls/private/localhost.key 。可替换。_default_代替通配符*。在/etc/httpd/conf.d创建mydomain1.conf。
mydomain1.conf内容如下:
<VirtualHost *:80>
DocumentRoot "/var/www/mydomain1/html"
ServerName mydomain1
VirtualHost>
<VirtualHost *:443>
DocumentRoot "/var/www/mydomain1/html"
ServerName mydomain1
SSLEngine on
SSLCertificateFile /etc/httpd/cert.d/mydomain1.crt
SSLCertificateKeyFile /etc/httpd/cert.d/mydomain1.key
VirtualHost>
在/etc/httpd/conf.d创建mydomain2.conf。
mydomain2.conf内容如下:
<VirtualHost *:80>
DocumentRoot "/var/www/mydomain2/html"
ServerName mydomain2
VirtualHost>
<VirtualHost *:443>
DocumentRoot "/var/www/mydomain2/html"
ServerName mydomain2
SSLEngine on
SSLCertificateFile /etc/httpd/cert.d/mydomain2.crt
SSLCertificateKeyFile /etc/httpd/cert.d/mydomain2.key
VirtualHost>
_default_ 和 **作为IP时,匹配任何IP地址。_default_是通配符*的别名(_default_ 和 *的意义相同)。*的优先级将高于_default_(暂未发现此规则在哪里生效)。https://httpd.apache.org/
https://httpd.apache.org/docs/2.4/
https://httpd.apache.org/docs/2.4/vhosts/examples.html