前言

现在,免费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. 实现Swaggera的在线接口调试

    1.访问Swagger的路径是:http://localhost:8080/swagger-ui.html 如果项目正常,则可看到如下界面: 2.点开下面的随意一个方法 如add添加数据的方法,展开: ...

  2. RabbitMq消息手动应答、放回队列重新消费、设置队列消息持久化、分发模式

    RabbitMq消息手动应答,放回队列重新消费,设置队列消息持久化 消息应答 概念 消费者完成一个任务可能需要一段时间,如果其中一个消费者处理一个长的任务并仅只完成了部分突然它挂掉了,会发生什么情况. ...

  3. Go语言核心36讲12

    作为Go语言最有特色的数据类型,通道(channel)完全可以与goroutine(也可称为go程)并驾齐驱,共同代表Go语言独有的并发编程模式和编程哲学. Don't communicate by ...

  4. 【OpenStack云平台】安装Centos操作系统

    视频教程:https://live.csdn.net/v/236820 1.环境准备 准备实验所需要的环境,需要安装VMware Workstation.使用的系统镜像为CentOS-7.5-x86_ ...

  5. 我引用中没有Spire.Pdf,但是发现无法解析的“Spire.Pdf”的不同版本之间存在冲突

    问题: 导出错误!未能加载文件或程序集"Spire.Pdf, Version=8.6.1.0, Culture=neutral, PublicKeyToken=663f351905198cb ...

  6. ADPCM(自适应差分脉冲编码调制)的原理和计算

    关于ADPCM ADPCM(Adaptive Differential Pulse Code Modulation, 自适应差分脉冲编码调制) 是一种音频信号数字化编码技术, 音频压缩标准G.722, ...

  7. Day20:继承详解

    继承的理解 继承:对类进行抽象化:也就是将存在的类构造成新的类: 比如说学生是一个类,老师是一个类,那么我们可以将学生类和老师类收纳进人这个类:那么学生和老师则为子类(派生类).人为父类(基类):子类 ...

  8. 对Java Web中WEB-INF目录的理解以及访问方法

    事情发生 在上个暑假第一次写Java web大项目的时候,对于目录管理及分配没有任何经验,就想着清晰明了. 后端servlet是用maven进行构建的,所以在目录上没有碰到什么大问题. 用idea进行 ...

  9. python-简单模块的使用

    提示:简单模块了解掌握 @ 目录 uuid模块 calendar日历模块 time模块 datetime模块 os模块 sys模块 random模块 json和pickle模块 json pickle ...

  10. MapStruct与lombok加载顺序问题与annotationProcessorPaths的关系?

    MapStruct是什么? MapStruct is a code generator that greatly simplifies the implementation of mappings b ...