前提:
需要提前准备好 SSL 证书文件(自签名证书和认证的证书都可以,示例中的 SSL 证书,来自 Let's Encrypt)。
下面的示例实现了,以 HTTPS 方式,使用 ho1ho.com 和 50d.win 这两个域名,都可以访问相同的网站。
在 /etc/httpd/conf.d 下新建配置文件:50d.win.conf
vim /etc/httpd/conf.d/50d.win.conf
内容如下:
ServerName www.50d.win ServerAlias 50d.win *.50d.win DocumentRoot /var/www/html SSLEngine on SSLCertificateFile /etc/letsencrypt/live/50d.win/cert.pem SSLCertificateKeyFile /etc/letsencrypt/live/50d.win/privkey.pem SSLCertificateChainFile /etc/letsencrypt/live/50d.win/chain.pem
另外再新建一个:ho1ho.com.conf
vim /etc/httpd/conf.d/ho1ho.com.conf
内容如下:
ServerName www.ho1ho.com ServerAlias ho1ho.com *.ho1ho.com DocumentRoot /var/www/html SSLEngine on SSLCertificateFile /etc/letsencrypt/live/ho1ho.com/cert.pem SSLCertificateKeyFile /etc/letsencrypt/live/ho1ho.com/privkey.pem SSLCertificateChainFile /etc/letsencrypt/live/ho1ho.com/chain.pem
若需要将 HTTP 全部转向 HTTPS,可以添加如下转发规则:例如,修改 50d.win.conf 配置文件,追加如下代码:
ServerName www.50d.win #ServerPath /domain ServerAlias 50d.win *.50d.win RewriteEngine On RewriteCond %{HTTPS} off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
注意:如果默认站点的 SSL 配置,是在 /etc/httpd/conf.d/ssl.conf 文件中进行配置的话,那么还需要在此文件中明确指定 ServerName,否则在访问网站时可能会出现 SSL 配置出错的提示。例如,假设默认站点的 ServerName 是 www.ho1ho.com:
# General setup for the virtual host, inherited from global configuration #DocumentRoot "/var/www/html" #ServerName www.example.com:443 DocumentRoot "/var/www/html" ServerName www.ho1ho.com ServerAlias ho1ho.com *.ho1ho.com
参考文章:
- https://www.rosehosting.com/blog/how-to-set-up-multiple-ssl-certificates-on-a-centos-vps-with-apache-using-one-ip-address/
- https://httpd.apache.org/docs/2.4/vhosts/examples.html
- http://stackoverflow.com/questions/12339044/how-to-run-multiple-sites-on-one-apache-instance