在 Lighttpd 上配置 https + 不同域名访问不同子目录的内容

在 Lighttpd 上配置 https + 不同域名访问不同子目录的内容

如果是第一次配置 https SSL 证书 + 域名的话,建议先阅读下面两篇教程

设置 https + 域名访问网站的最简单方法 - 不需要 SSL 证书,通过 Cloudflare 实现
现在的网站,https 加密传输已经是标准配置了,不支持 https 的网站基本已经不存在了,也没法存活了。但是新手自己配置 https + 域名还是不太容易,这篇文章教大家一个最简单的方法配置 https + 域名 域名的购买和在 Cloudflare 上托管就不在这里说明了,网上有很多很好的教程,这里主要讲一下不申请 SSL 证书,用 Cloudflare 实现 https + 域名访问自己的搭建的网站。 最简单的网站( IP : 80 端口)(端口不是 80 的网站看下面) 如果搭建的网站或是网页地址是 http://142.250.115.113:80,IP 是不支持 https 的,所以只能是 http ,默认端口是 80,所以 80 也可以不加,
在 Lighttpd 上用 CertBot 安装 Let’s Encrypt SSL 证书
本教程仅支持 ubuntu 和 debian 系统 * 如果你是第一次配置用 https + 域名来访问网站,建议先阅读下面这篇教程 设置 https + 域名访问网站的最简单方法 - 不需要 SSL 证书,通过 Cloudflare 实现现在的网站,https 加密传输已经是标准配置了,不支持 https 的网站基本已经不存在了,也没法存活了。但是新手自己配置 https + 域名还是不太容易,这篇文章教大家一个最简单的方法配置 https + 域名 域名的购买和在 Cloudflare 上托管就不在这里说明了,网上有很多很好的教程,这里主要讲一下不申请 SSL 证书,用 Cloudflare 实现 https + 域名访问自己的搭建的网站。 最简单的网站( IP : 80 端口)(端口不是 80 的网站看下面)
  • 先在 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