不花钱几分钟让你的站点也支持https
前言
现在,免费SSL证书已经很普遍了,但是,申请和配置SSL证书仍然是一件较为繁琐的事,修改web服务配置在所难免,且不同的web服务配置方法不一样,不具备通用性。本文介绍一种通用的快速配置方法,web服务只需要做很少的改动(只需要修改端口号即可),支持任何web服务,只需要满足以下条件:
- 你的服务器能使用podman或者docker
- 你的站点能通过公网访问
步骤
这里以podman为例(docker用户只需要把podman命令替换为docker即可)
使用终端登录你的服务器
执行
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
如果原web服务的端口号是80,将其改成任意一个非80端口,保证80端口不被占用,这里假设修改后的端口号为8080,服务器内网IP为192.168.1.100
执行如下命令:
注意: 下面出现的
www.example.com替换为你的真实域名。mkdir vhosts
mkdir data
touch vhosts/www.example.com.toml
编辑
vhosts/www.example.com.toml文件,输入如下内容,并保存。upstream = ["192.168.1.100:8080"]
执行以下命令:
注意:
<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的更多相关文章
- 10分钟让你的站点也支持Markdown
Markdown简介 Markdown 是一种轻量级的「标记语言」,它的优点很多,目前也被越来越多的写作爱好者,撰稿者广泛使用.Markdown 的语法十分简单,常用的标记符号也不超过十个,这种相对于 ...
- Apache2配置多域名站点及支持https
0x00 预备条件 申请SSL证书 建立对应站点目录 开放443端口 0x01 配置sites-available文件 执行 vi /etc/apache2/sites-available/zecoc ...
- 为阿里云站点部署免费 HTTPS
本文记录了部署在阿里云的站点,在申请了免费的 SSL 证书后如何正确的部署到站点上,让站点支持 HTTPS 访问. 阿里云引入了沃通作为 CA 证书供应商,并开放了免费 SSL 申请的页面,之前一直想 ...
- [django]Django站点admin支持中文显示和输入设置
正文: Django站点admin支持中文输入设置,操作如下: 1 需要确定的你的数据库的client客户端和服务端的编码设置为utf-8,如果不是,请将其设置成utf-8编码,我采用mysql,详情 ...
- 站点默认访问https
需求简介 现在网站都是https访问了,再用http会显得很low,所以我要把网站设置为默认的https访问. 1nginx的rewrite方法 这应该是大家最容易想到的方法,将所有的http请求通过 ...
- phpcms站点域名配置https无法提交如何处理
一位网友给ytkah反映说phpcms站点域名配置https无法提交,在后台修改站点域名为https提交后提示“站点域名格式应该为http://www.phpcms.cn/,请以‘/’结束”,这个要如 ...
- 30分钟让网站支持HTTPS
对于一个良好和安全的网络——并且也为了更快的性能,新的API网络例如Service Workers,更佳的搜索排名,还有——在你的网站上使用HTTPS是关键.这里我会指导大家如何轻松搞定. 我不是安全 ...
- Centos7.2下Nginx配置SSL支持https访问(站点是基于.Net Core2.0开发的WebApi)
准备工作 1.基于nginx部署好的站点(本文站点是基于.Net Core2.0开发的WebApi,有兴趣的同学可以跳http://www.cnblogs.com/GreedyL/p/7422796. ...
- 服务器多站点多域名HTTPS实现
假设有这样一个场景,我们有多个站点(例如site1.marei.com,site2.marei.com和site3.marei.com)绑定到同一个IP:PORT,并区分不同的主机头.我们为每一个SS ...
- 5分钟上手:本地开发环境启动HTTPS
今天我们访问的所有网站几乎都是受HTTPS保护的.如果你的站点还没有,那你应该使用它.使用HTTPS保护服务器也意味着你不能从不是HTTPS服务器向此服务器发送请求.这给使用本地开发环境的开发人员带来 ...
随机推荐
- Debian Linux 的安装
Debian Linux 的安装 作者:Grey 原文地址: 博客园:Debian Linux 的安装 CSDN:Debian Linux 的安装 说明 本安装说明是基于 Windows 10 下 V ...
- Vue使用axios请求接口返回成功200但是进入到catch中
发生这个问题时查阅了许多资料,没有一个是对得上的.最后发现原来是在请求拦截器中的错误 错误代码如下 // 添加响应拦截器 axios.interceptors.response.use(functio ...
- 【每日一题】【奇偶分别中心扩展/动态规划】2022年2月5日-NC最长回文子串的长度
描述对于长度为n的一个字符串A(仅包含数字,大小写英文字母),请设计一个高效算法,计算其中最长回文子串的长度. 方法1:奇数偶数分别从中心扩展 import java.util.*; public c ...
- Java 中的接口还可以这样用,你知道吗?
Java 程序员都知道要面向接口编程,那 Java 中的接口除了定义接口方法之外还能怎么用你知道吗?今天阿粉就来带大家看一下 Java 中的接口还可以有哪些用法. 基本特性 我们先看一下接口的基本特性 ...
- rpm和yum仓库
一.rpm rpm从官网下,或者自研 外来的硬件设备连接到Linux上,必须挂载 rpm -qa(all) 显示当前系统中以 RPM 方式安装的所有软件列表 rpm -q 软件名 查询指定软件是否已安 ...
- 你不知道的Map家族中的那些冷门容器
概述 本篇文章主要讲解下Map家族中3个相对冷门的容器,分别是WeakHashMap.EnumMap.IdentityHashMap, 想必大家在平时的工作中也很少用到,或者压根不知道他们的特性以及适 ...
- 线程、GIL全局解释器锁、进程池与线程池
目录 多进程实现TCP服务端并发 互斥锁代码实操 线程理论 创建线程的两种方式 多线程实现TCP服务端并发 线程的诸多特性 GIL全局解释器锁 验证GIL的存在 GIL与普通互斥锁 python多线程 ...
- JavaScript:对象:对象和属性的内存结构是什么样的?
在说变量的时候,大致画了变量的内存结构,现在来看一下对象的内存结构是什么样的,有助于我们理解传参的各种情况,只是大致的画一下内存模型,不代表实际内存情况. 我们可以用一段代码,来判断一下,是不是这样的 ...
- Amber22 安装过程miniconda报错处理
最近在安装amber22时,使用其官方说明安装,但在安装miniconda这一步出错,致使amber22安装不成功! 报错如下: CondaFileIOError: '/home/lbm/amber2 ...
- NSOperation的简单使用
1.默认情况下,NSOperation并不具备封装操作的能力,必须使用它的子类,使用NSOperation子类的方式有3种: 1> NSInvocationOperation 2> NSB ...