前言

现在,免费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. 执行以下命令:

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

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

    podman run -d --name nginx-proxy \
    --restart always \
    --env AUTO_SSL=on \
    --env AUTO_SSL_EMAIL=<YOUR_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

最新文章

  1. ATA/SATA/SCSI/SAS/FC总线简介
  2. iOS - (调用系统本机发送短信功能)
  3. codevs 4927 线段树练习5
  4. js 函数闭包内部返回函数体调用方法难点解答
  5. mysql 外连接总结
  6. ie编程半天的学习总结
  7. while if 循环判断
  8. Sql Server相关的性能计数器
  9. POPTEST联合创始人李爱然的“IT培训创业的随想&quot;
  10. POJ 2593 Max Sequence
  11. 团队作业8——第七天(beta阶段)
  12. 201521123044 《Java程序设计》第11周学习总结
  13. 平面图转对偶图(Bzoj1001:狼抓兔子)
  14. DoesNotExist at /account/
  15. JavaScript装饰者模式
  16. [leetcode]84. Largest Rectangle in Histogram直方图中的最大矩形
  17. Linux使用退格键时出现^H + Tab键命令补全失效/方向键失效 + ls文件夹和文件没有颜色
  18. MySQL学习(十一)
  19. 洛咕 P2336 [SCOI2012]喵星球上的点名
  20. search bar 创建的一些文章

热门文章

  1. 把Mybatis Generator生成的代码加上想要的注释
  2. vscode配置remote ssh
  3. go slice不同初始化方式性能&amp;数组比较
  4. 瞧瞧别人家的API接口,那叫一个优雅
  5. 分布式日志:Exceptionless的安装与部署
  6. Nmap扫描参数
  7. jmeter json提取器提取某个属性的所有值
  8. 微服务系列之服务监控 Prometheus与Grafana
  9. 将git仓库从submodule转换为subtree
  10. 如何用 Python 隐藏你的 API 密钥