前言

现在,免费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

不花钱几分钟让你的站点也支持https的更多相关文章

  1. 10分钟让你的站点也支持Markdown

    Markdown简介 Markdown 是一种轻量级的「标记语言」,它的优点很多,目前也被越来越多的写作爱好者,撰稿者广泛使用.Markdown 的语法十分简单,常用的标记符号也不超过十个,这种相对于 ...

  2. Apache2配置多域名站点及支持https

    0x00 预备条件 申请SSL证书 建立对应站点目录 开放443端口 0x01 配置sites-available文件 执行 vi /etc/apache2/sites-available/zecoc ...

  3. 为阿里云站点部署免费 HTTPS

    本文记录了部署在阿里云的站点,在申请了免费的 SSL 证书后如何正确的部署到站点上,让站点支持 HTTPS 访问. 阿里云引入了沃通作为 CA 证书供应商,并开放了免费 SSL 申请的页面,之前一直想 ...

  4. [django]Django站点admin支持中文显示和输入设置

    正文: Django站点admin支持中文输入设置,操作如下: 1 需要确定的你的数据库的client客户端和服务端的编码设置为utf-8,如果不是,请将其设置成utf-8编码,我采用mysql,详情 ...

  5. 站点默认访问https

    需求简介 现在网站都是https访问了,再用http会显得很low,所以我要把网站设置为默认的https访问. 1nginx的rewrite方法 这应该是大家最容易想到的方法,将所有的http请求通过 ...

  6. phpcms站点域名配置https无法提交如何处理

    一位网友给ytkah反映说phpcms站点域名配置https无法提交,在后台修改站点域名为https提交后提示“站点域名格式应该为http://www.phpcms.cn/,请以‘/’结束”,这个要如 ...

  7. 30分钟让网站支持HTTPS

    对于一个良好和安全的网络——并且也为了更快的性能,新的API网络例如Service Workers,更佳的搜索排名,还有——在你的网站上使用HTTPS是关键.这里我会指导大家如何轻松搞定. 我不是安全 ...

  8. Centos7.2下Nginx配置SSL支持https访问(站点是基于.Net Core2.0开发的WebApi)

    准备工作 1.基于nginx部署好的站点(本文站点是基于.Net Core2.0开发的WebApi,有兴趣的同学可以跳http://www.cnblogs.com/GreedyL/p/7422796. ...

  9. 服务器多站点多域名HTTPS实现

    假设有这样一个场景,我们有多个站点(例如site1.marei.com,site2.marei.com和site3.marei.com)绑定到同一个IP:PORT,并区分不同的主机头.我们为每一个SS ...

  10. 5分钟上手:本地开发环境启动HTTPS

    今天我们访问的所有网站几乎都是受HTTPS保护的.如果你的站点还没有,那你应该使用它.使用HTTPS保护服务器也意味着你不能从不是HTTPS服务器向此服务器发送请求.这给使用本地开发环境的开发人员带来 ...

随机推荐

  1. 面试 考察网络请求HTTP相关知识(第六天!)

    01.HTTP 常⻅的状态码有哪些? 1xx 服务器收到请求 2xx 请求成功         ---   200 成功状态码 3xx 重定向            ---  301永久重定向,浏览器 ...

  2. QQ登录

    public function login(){ $urlencode = urlencode("http://www.zhangxuhui.com/index/Index/callback ...

  3. FIT软件开发

    1.baidu,google 术和道 2.FIT: future integrated Technology 3.集体检视 > commiter 4.高内聚,低耦合 => 太极 => ...

  4. hwlog--logger.go

    // Copyright(C) 2021. Huawei Technologies Co.,Ltd. All rights reserved.// Package hwlog provides the ...

  5. cmd唤醒windows设置,并配置opsshd

    1. 从cmd唤起windows设置 这个东西很有意思,大部分在运行窗口输入的内容,从cmd或powershell都能唤起,如:control控制面板,但偶尔有些操作就不能通用, 如: ms-sett ...

  6. (C++) C++ 中 shared_ptr weak_ptr

    shared_ptr std::shared_ptr<int> sp1 = new int(); // shared count = 1, weak count = 0 std::shar ...

  7. 一文详解GaussDB(DWS) 的并发管控和内存管控

    摘要:DWS的负载管理分为两层,第一层为cn的全局并发控制,第二层为资源池级别的并发控制. 本文分享自华为云社区<GaussDB(DWS) 并发管控&内存管控>,作者: fight ...

  8. 【第7篇】AI语音交互原理介绍

    本章主要介绍AI语音交互的原理,包括语音交互的流程以及各流程节点所涉及的相关知识,如语音采集.语音识别.自然语言处理.语音合成等. 2.1 AI语音交互 AI语音交互通俗点说就是人与机器间进行语音理解 ...

  9. MySQL进阶实战5,为什么查询速度会慢

    一.先了解一下MySQL查询的执行过程 MySQL在查询时,它是由很多子任务组成的,每个子任务都会消耗一定的时间,如果要想优化查询,实际上要优化其子任务,可以消除一些子任务.减少子任务的执行次数.让子 ...

  10. 简单的Dos命令学习

    Dos命令学习 打开CMD的方式 从菜单栏打开,windows系统里 win+R 输入cmd 在任意文件夹下,按住shift+右键,点击打开PowerShell 在资源管理器的地址栏前面加上cmd+空 ...