1. 概述
Apache是一款常见的Web服务器软件,在配置虚拟主机时相当方便。本文将介绍常用的虚拟主机配置方法。
2. 配置文件介绍
在进行Apache虚拟主机配置时,需要编辑Apache的主配置文件httpd.conf
。该文件通常位于/etc/httpd/conf
目录下,不同的Linux版本可能会有所不同。
在httpd.conf
文件中,默认已有一个主机配置段。如果需要配置多个虚拟主机,则需要在该配置段中添加以下内容:
# Load virtual host configuration files
IncludeOptional conf.d/*.conf
该配置将会加载/etc/httpd/conf.d
目录下的所有以.conf
结尾的文件,这些文件就是我们将要创建的虚拟主机配置文件。
3. 基本虚拟主机配置
通过基本的虚拟主机配置,可以让服务器根据用户请求的不同域名,返回不同的网站。
3.1 配置虚拟主机
在/etc/httpd/conf.d
目录下创建一个www.example.com.conf
文件,内容如下:
ServerAdmin admin@example.com
DocumentRoot /var/www/example
ServerName www.example.com
ServerAlias example.com
ErrorLog /var/log/httpd/example-error.log
CustomLog /var/log/httpd/example-access.log common
上述配置中,通过ServerName
和ServerAlias
指定了此虚拟主机的域名,DocumentRoot
指定了网站的根目录,ErrorLog
和CustomLog
分别开启了错误日志和访问日志。
3.2 启用虚拟主机
在/etc/httpd/conf/httpd.conf
文件中,取消以下行前的注释:
#NameVirtualHost *:80
再在文件末尾添加以下内容:
IncludeOptional conf.d/*.conf
重新启动Apache服务,让配置生效。
systemctl restart httpd
现在,用户访问www.example.com
和example.com
时,即可访问到/var/www/example
目录下的网站。
4. HTTPS虚拟主机配置
HTTPS虚拟主机配置需要在基本虚拟主机配置的基础之上进行。
4.1 配置SSL证书
要开启HTTPS协议,需要先准备SSL证书。可以通过Let's Encrypt等机构申请免费SSL证书,也可以自行生成SSL证书。
将SSL证书和密钥文件复制到服务器并设置权限,例如:
mkdir /etc/httpd/ssl
cd /etc/httpd/ssl
cp /path/to/cert.crt .
cp /path/to/private.key .
chmod 600 /etc/httpd/ssl/*
4.2 创建HTTPS虚拟主机
创建www.example.com-ssl.conf
文件:
ServerAdmin admin@example.com
DocumentRoot /var/www/example
ServerName www.example.com
ServerAlias example.com
ErrorLog /var/log/httpd/example-error.log
CustomLog /var/log/httpd/example-access.log common
SSLEngine on
SSLCertificateFile /etc/httpd/ssl/cert.crt
SSLCertificateKeyFile /etc/httpd/ssl/private.key
在上述配置中,使用SSLEngine
开启SSL加密,指定证书和密钥文件。
4.3 启用HTTPS虚拟主机
首先确认mod_ssl
已安装,并在/etc/httpd/conf/httpd.conf
文件中取消以下行前的注释:
#LoadModule ssl_module modules/mod_ssl.so
然后在文件末尾添加以下内容:
IncludeOptional conf.d/*.conf
ServerName _default_
SSLRequireSSL
ErrorLog logs/ssl_error_log
TransferLog logs/ssl_access_log
上述配置表示强制使用SSL连接。
重新启动Apache服务,HTTPS虚拟主机即可生效。
systemctl restart httpd
5. 总结
本文介绍了Apache虚拟主机配置的基础和HTTPS配置的方法。配置Apache虚拟主机可以让不同的域名返回不同的网站,而通过开启HTTPS协议,可以保障数据的安全和加密传输。