在 Lighttpd 上配置 https + 不同域名访问不同子目录的内容
如果是第一次配置 https SSL 证书 + 域名的话,建议先阅读下面两篇教程
- 先在 CloudFlare 里创建 DNS 记录把所有的域名都解析到服务器 IP
- 如果 Lighttpd 服务的根目录是 /var/www/html/
- 域名 ghost.techio.top 目录是 /var/www/html/ghost
- 域名 wordpress.techio.top 目录是 /var/www/html/wordpress
- 域名 halo.techio.top 目录是 /var/www/html/halo
- 停止 Lighttpd 服务,CertBot 生成证书时,需要通过网络验证域名的解析 IP ,会用到 80 端口,所以要生把 Lighttpd 服务停止。
sudo systemctl stop lighttpd
- 给每个域名申请 SSL 证书
sudo certbot certonly --standalone -d www.techio.top
sudo certbot certonly --standalone -d ghost.techio.top
sudo certbot certonly --standalone -d wordpress.techio.top
sudo certbot certonly --standalone -d halo.techio.top
- 证书创建后再启动 Lighttpd 服务
sudo systemctl start lighttpd
- 修改 Lighttpd 配置文件
sudo nano /etc/lighttpd/lighttpd.conf
- 在文件最后加入下面内容,host 名称,子目录名称和证书所在的目录要对应
$SERVER["socket"] == ":443" {
ssl.engine = "enable"
# 这里是默认证书
ssl.pemfile = "/etc/letsencrypt/live/www.techio.top/fullchain.pem"
ssl.privkey = "/etc/letsencrypt/live/www.techio.top/privkey.pem"
# 这里检查 hostname ,如果是 ghost.techio.top ,就设定目录是 ghost ,并加载相应的证书,后面以此类推
$HTTP["host"] == "ghost.techio.top" {
server.document-root = "/var/www/html/ghost/"
ssl.pemfile = "/etc/letsencrypt/live/ghost.techio.top/fullchain.pem"
ssl.privkey = "/etc/letsencrypt/live/ghost.techio.top/privkey.pem"
}
$HTTP["host"] == "wordpress.techio.top" {
server.document-root = "/var/www/html/wordpress/"
ssl.pemfile = "/etc/letsencrypt/live/wordpress.techio.top/fullchain.pem"
ssl.privkey = "/etc/letsencrypt/live/wordpress.techio.top/privkey.pem"
}
$HTTP["host"] == "halo.techio.top" {
server.document-root = "/var/www/html/halo/"
ssl.pemfile = "/etc/letsencrypt/live/halo.techio.top/fullchain.pem"
ssl.privkey = "/etc/letsencrypt/live/halo.techio.top/privkey.pem"
}
}
- 最后重启 Lighttpd 服务,这样不同的子域名就可以访问不同子目录下的内容了
sudo systemctl start lighttpd