• 不花钱几分钟让你的站点也支持https


    前言

    现在,免费SSL证书已经很普遍了,但是,申请和配置SSL证书仍然是一件较为繁琐的事,修改web服务配置在所难免,且不同的web服务配置方法不一样,不具备通用性。本文介绍一种通用的快速配置方法,web服务只需要做很少的改动(只需要修改端口号即可),支持任何web服务,只需要满足以下条件:

    • 你的服务器能使用podman或者docker
    • 你的站点能通过公网访问

    步骤

    这里以podman为例(docker用户只需要把podman命令替换为docker即可)

    1. 使用终端登录你的服务器

    2. 执行podman --help命令检查是否已经安装podman,如果提示命令找不到,则使用下面命令安装

      Debian/Ubuntu 20.10+ 系统:

      sudo apt-get -y install podman
      

      Centos系统:

      sudo yum -y install podman
      

      其他系统可参照podman文档自行安装:https://podman.io/getting-started/installation

    3. 如果原web服务的端口号是80,将其改成任意一个非80端口,保证80端口不被占用,这里假设修改后的端口号为8080,服务器内网IP为192.168.1.100

    4. 执行如下命令:

      注意: 下面出现的www.example.com替换为你的真实域名。

          mkdir vhosts
          mkdir data
          touch vhosts/www.example.com.toml
      

      编辑vhosts/www.example.com.toml文件,输入如下内容,并保存。

      upstream = ["192.168.1.100:8080"]
      
    5. 执行以下命令:

      注意:替换为你的真实邮箱

      需要使用sudo执行的原因是绑定80端口需要root权限,如果你的服务器没有这个限制,可以把sudo去掉,以普通用户权限执行即可。

      podman run -d --name nginx-proxy \
         --restart always \
         --env AUTO_SSL=on \
         --env AUTO_SSL_EMAIL= \
         -v "$PWD/vhosts":/etc/nginx-proxy/vhosts:ro \
         -v "$PWD/data":/var/nginx-proxy \
         -p 80:80 \
         -p 443:443 \
         kasonyang/nginx-proxy:latest
      

    完成以上步骤后,等待一两分钟即可,输入https://你的域名查看是否可以正常访问,如果不行,可以使用podman logs nginx-proxy 查看一下是否有报错。

    SSL证书时效

    申请的SSL证书有效期3个月,每天会自动检查,到期前会自动更新,更新不会中断服务。

    后续增加域名

    后续如果有更多域名需要启用https,就很简单了。参照步骤4,为新域名在vhosts目录下创建一个对应的toml配置文件即可。新增文件后,80端口(http)立即可用,443端口(https)需要等待几分钟才能完成生效(申请证书需要时间)。

    源码

    本文使用的docker镜像开源,获取源码可以戳这个链接: https://github.com/kasonyang/docker-nginx-proxy

  • 相关阅读:
    为 AI 而生的编程语言「GitHub 热点速览」
    http 跨域资源共享详解
    OCS认证有机含量标准
    【面试题精讲】SpringBoot的传播机制详解
    SpringBoot框架实现简单定时任务
    向上管理读书笔记
    useEffect Hook使用纠错
    [兔子私房课] Mybatis开发详解与项目实战02
    哈希表题目:两数之和
    【python笔记】第九节 函数进阶
  • 原文地址:https://www.cnblogs.com/kason/p/17119901.html