<VirtualHost *:443>
ServerName domain.com
ServerAlias www.domain.com
DocumentRoot /home/wwwroot/domain
SSLEngine on
# 添加 SSL 协议支持协议,去掉不安全的协议
SSLProtocol all -SSLv2 -SSLv3
# 修改加密套件如下
SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM
SSLHonorCipherOrder on
# 证书公钥配置
SSLCertificateFile /usr/local/apache/cert/domain.com.crt
# 证书私钥配置
SSLCertificateKeyFile /usr/local/apache/cert/domain.com.key
# 证书链配置,如果该属性开头有 ‘#’字符,请删除掉
SSLCertificateChainFile /usr/local/apache/cert/domain.com_root_bundle.crt
ServerAdmin xxxx@qq.com
</VirtualHost>
VirtualHost *:443
定义了一个监听在 443 端口的虚拟主机。
:443 指定了监听的端口号,这里是 443,表示监听 HTTPS 请求。
* 是通配符,表示匹配任意的 IP 地址。在这种情况下,* 表示服务器上所有可用的 IP 地址。
因此,这个虚拟主机配置将监听服务器上所有可用的 IP 地址的 443 端口,用于处理 HTTPS 请求。
ServerName domain.com
指定虚拟主机的主机名(域名),即该虚拟主机将处理哪个域名的请求。
在一个虚拟主机配置中,ServerName 指令是必需的,并且只能有一个。它用于定义该虚拟主机的主要域名。
当客户端发送请求时,Apache 服务器会将请求的域名与虚拟主机配置中的 ServerName 指令进行匹配,从而确定哪个虚拟主机应该处理该请求。
ServerAlias www.domain.com
指定虚拟主机的别名(附加域名),即除了 ServerName 指定的主要域名外,还可以通过别名来访问该虚拟主机。
在一个虚拟主机配置中,可以有多个 ServerAlias 指令。它用于定义该虚拟主机的其他域名。
当客户端发送请求时,如果请求的域名与 ServerName 指定的主要域名不匹配,但与某个 ServerAlias 指定的域名匹配,则该虚拟主机也会处理该请求。
通常情况下,ServerName 不应该包含 www 前缀。ServerName 用于指定虚拟主机的主要域名,而 www 是域名的子域名,通常用作主域名的别名。因此,在配置中,ServerName 应该是主域名,而 www 则应该在 ServerAlias 中指定。
DocumentRoot /home/wwwroot/domain
指定了服务器上该虚拟主机的根目录,即网站的根目录。在这个示例中,根目录为 /home/wwwroot/domain。
SSLEngine on
启用 SSL 引擎,开启 HTTPS 支持。
SSLProtocol all -SSLv2 -SSLv3
指定了 SSL 协议的支持版本。这里禁用了 SSLv2 和 SSLv3,只支持更安全的协议。
SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM
指定了 SSL 加密套件的配置。这里配置了一系列安全性较高的加密套件。
SSLHonorCipherOrder on
启用了 SSL 优先选择加密套件的选项,确保服务器端的优先使用安全性较高的加密套件。
SSLCertificateFile, SSLCertificateKeyFile 和 SSLCertificateChainFile
分别指定了服务器证书、私钥和证书链的文件路径。这些文件用于配置 HTTPS 连接所需的证书信息。
ServerAdmin xxx@qq.com:
指定了服务器管理员的电子邮件地址,用于接收服务器相关的通知和报警。
如果你想将 sub.domain.com 这个子域名指定到另外一个目录,你可以通过在 Apache 的虚拟主机配置中添加一个额外的 VirtualHost 来实现。
以下是一个示例配置:
# 子域名 sub.domain.com <VirtualHost *:80> ServerName s.example.com DocumentRoot /var/www/html/s </VirtualHost>