【NPM】Nginx Proxy Manager 一键申请 SSL 证书,自动续期,解决阿里云SSL免费证书每3个月失效问题
文章目录
- 1、NPM 简介
- 2、实战
- Step 1:环境搭建
- 也可以看作者安装笔记
- Step 2:创建容器
- 2.1 在系统任意位置创建一个文件夹,此文档以`~/`nginx-proxy-manager为例。
- 2.2 创建`docker-compose.yaml`
- 2.3 启动NPM服务
- Step 3:配置反向代理
- 3.1 修改自己的用户名、邮箱、密码
- 3.2 配置反向代理
- Step 4:一键申请 SSL 证书
- Step 5:转发到SpringBoot
- 这个nginx配置文件做了以下几件事:
- one more thing
- 废话不多说上教程:(动画教程 + 图文教程)
- 一、动画教程
- 激活 与 升级(至最新版本)
- 二、图文教程
1、NPM 简介
Nginx Proxy Manager 就是一个 Nginx 的代理管理器
- 它
最大的特点是简单方便 - 即使是
没有 Nginx 基础的小伙伴,也能轻松使用它来完成反向代理的操作 - 而且因为
自带面板,操作极其简单 非常适合配合 Docker 搭建的应用使用- Nginx Proxy Manager 后台还可以
一键申请 SSL 证书,并且会自动续期,方便省心。
NPM 项目地址:https://github.com/NginxProxyManager/nginx-proxy-manager
由于阿里云和华为云等免费证书的有效期从1年调整到3个月,不断的发邮件和短信提醒我证书到期,烦不胜烦,于是想着就用NPM来管理和自动更新SSL证书,一劳永逸的来解决这个问题。
如果不使用NPM,用crontab的方式来定时更新Let’s Encrypt 免费 SSL证书也是可行的,但是需要安装一系列的软件,特别是编辑nginx的配置文件,虽然VIM用得溜,但依然不想在shell环境下去编辑nginx.conf配置文件,强迫的我需要各种对齐。
让我们开始吧~
2、实战
Step 1:环境搭建
首先默认服务器已经安装好Docker和Docker-compose,如果不会,请查看下列说明:
Docker 安装文档:https://docs.docker.com/engine/install/
Docker Compose 安装文档:https://docs.docker.com/compose/install/
我推荐按照 Docker 官方文档安装 Docker 和 Docker Compose,因为部分 Linux 发行版软件仓库中的 Docker 版本可能过旧。
也可以看作者安装笔记
- 点击进入
Step 2:创建容器
2.1 在系统任意位置创建一个文件夹,此文档以~/nginx-proxy-manager为例。
mkdir ~/nginx-proxy-manager && cd ~/nginx-proxy-manager
2.2 创建docker-compose.yaml
vi docker-compose.yml
在英文状态的输入法下,按下i,左下角出现--INSERT--后,粘贴填入下面的内容:
version: '3'
services:app:image: 'jc21/nginx-proxy-manager:latest'restart: unless-stoppednetwork_mode: 'host' # 网络采用host模式,docker和宿主机共享网络设置volumes:- ./data:/data # .表示当前文件夹,:左边的意思是在当前文件夹下创建一个 data 目录,用于存放数据,如果不存在的话,会自动创建- ./letsencrypt:/etc/letsencrypt # .表示当前文件夹,:左边的意思是在当前文件夹下创建一个letsencrypt目录,用于存放证书,如果不存在的话,会自动创建- /home/web/union-web:/home/web/union-web # :左右表示宿主机和docker目当映射,同名即可- /home/web:/home/web # :左右表示宿主机和docker目当映射,同名即可extra_hosts:- 'host.docker.internal:host-gateway'
2.3 启动NPM服务
docker-compose up -d
或
docker compose up -d # 如果你用的是 docker-compose-plugin 的话,用这条命令
不出意外,此时你使用http://127.0.0.1:81就可以访问 NPM 的网页端了。(注意把127.0.0.1替换成你实际服务器的 IP)
默认登陆的用户名:admin@example.com 密码:changeme
第一次登陆会提示更改用户名和密码,建议修改一个复杂一点的密码,并在不使用的时候从防火墙/安全组关掉81端口的访问权限。
至此,我们已经完成了 Nginx Proxy Manager 的环境搭建。
Step 3:配置反向代理
3.1 修改自己的用户名、邮箱、密码
-
登陆网页端之后,会弹出修改用户名和密码的对话框,我们根据自己的实际情况来修改自己的用户名和邮箱。
-
修改为自己的实际邮箱和名称

- 修改为强密码

3.2 配置反向代理
接下来我们可以给我们的SpringBoot后端服务配置一个反向代理了。
- 点击
Proxy Hosts,

- 接着点击
Add Proxy Host,弹出如下对话框:

看起来有点复杂,但其实很简单,只要用到其中的几个功能即可,这边稍微解释一下:
Domain Names:填写网站的域名,首先记得做好 DNS 解析,把域名解析到服务器的 IP 上Scheme:默认http即可,除非你有自签名证书Forward Hostname/IP:填入服务器的 IP,**注意:**我们的Docker采用了host模式,共享宿主机网络,因此这里填写内网或真实的外网IP:127.0.0.1Forward Port:填入映射出的端口,这边默认是80Cache Assets:缓存,配置时不要打开,打开后不能即时更新配置,容易怀疑自己Block Common Exploits: 阻止常见的漏洞,可以选择打开Websockets Support:WS 支持,可以选择打开Access List: 这个是 NPM 自带的一个限制访问功能,暂时不用,后续可以自行研究。
以下为示例:

配置时不要打开 Cache Assets
这个配置其实只干了一件事,就是监听server_name的80端口。
Step 4:一键申请 SSL 证书
- 接着我们来申请一张 SSL 证书,让我们的网站支持
https访问。


如图所示,记得打开强制 SSL(Force SSL),其他四个的功能请自行研究,本文不多做介绍。
不出意外,你将成功申请到 SSL 证书,证书会三个月自动续期。
Step 5:转发到SpringBoot
接下来的才是干货,上边的部分网上都有介绍,正常情况,我们使用nginx一般用于前后端分流,NPM我认为其实更适合做多网站多域名的反代中转,话不多说,继续正题。
先看一下nginx的传统配置文件:
#user nobody;
worker_processes 2;#error_log logs/error.log;
#error_log logs/error.log notice;
error_log logs/error.log info;pid logs/nginx.pid;events {use epoll;worker_connections 65535;
}http {include mime.types;default_type application/octet-stream;log_format main '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for" $request_time';access_log logs/access.log;sendfile on;#tcp_nopush on;#keepalive_timeout 0;keepalive_timeout 65;client_header_buffer_size 16k;large_client_header_buffers 4 16k;client_max_body_size 800m;client_body_buffer_size 1024k;gzip on;gzip_min_length 1k;gzip_buffers 4 16k;gzip_http_version 1.0;gzip_comp_level 2;gzip_types text/plain application/x-javascript text/css application/xml;gzip_vary on;upstream union-api {server 127.0.0.1:8080;}server {listen 80;server_name www.test.com;root /home/web/;location / {proxy_pass http://union-api;proxy_set_header Host $host:$server_port;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}location /union-web {alias /home/web/union-web;index index.html;try_files $uri /union-web/index.html;}location ~.*\.(js|css|html|png|jpg)$ {expires -1;}}
}
这个nginx配置文件做了以下几件事:
- 监听http://www.test.com的80端口
- 指定了root根目录为/home/web/
- location /,用proxy_pass转发到SpringBoot的8080端口
- location /union-web,前端的WEB界面,直接访问/home/web/union-web
以上是一个主域名前后端分离的配置文件,那么在NPM当中如何配置?
- 点击 Edit Proxy Host,再点击Advanced标签页,如下图所示:

- 将以下配置copy到Custom Nginx Configuration输入框中:
root /home/web/;location / {proxy_pass http://127.0.0.1:8080; #不用upstream的方式,直接写proxy_set_header Host $host:$server_port;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}location /union-web {alias /home/web/union-web;index index.html;try_files $uri /union-web/index.html;}location ~.*\.(js|css|html|png|jpg)$ {expires -1;}
- 如目录有变化请按需修改,如有二级域名,请采用添加多个proxy host的方式进行配置。
至此,你已经成功完成了NPM的反向代理,快尝试使用域名访问一下看看吧!
所有的配置,最终都会在~/nginxproxymanager/data/nginx/proxy_host/1.conf当中,可以通过这个配置文件反向来推导Custom Nginx Configuration的配置方式,Custom Nginx Configuration的配置都会写进server{}括号当中。
one more thing
程序员的烦恼
为激活编程软件到处找激活码(JetBrains 全家通)- 苦于JetBrains 正版授权太贵而放弃
- 学习资料贵且不成体系而躺平
关注公众号金榜探云手
你可以获得什么?
JetBrains 最新激活码,永久更新(只供娱乐,切勿商用)
公众号回复:00csJetBrains 正版授权,全主题、全插件免费使用,一年一杯咖啡钱, 公众号回复:vipIT 技术视频共享(国内外全系列,只对粉丝开放)
付费版Idea百科全书,和Pycharm使用百科全书全部输出整理了,这些工具都掌握了对编码效率肯定是有本质上的提升,配合Github Copilot基本能让工具完成大部分开发工作,专注完成业务实现就好。
IDEA付费版使用百科全书
https://ziby0nwxdov.feishu.cn/docx/MiCfdogB4omIa9xlW50cByiGn5nPycharm付费版使用百科全书 https://ziby0nwxdov.feishu.cn/docx/DArFdVFQpomfUvxV7xZcCwXYn0c
废话不多说上教程:(动画教程 + 图文教程)
一、动画教程
激活 与 升级(至最新版本)
激活

升级最新版本

二、图文教程
- 点击进入
相关文章:
【NPM】Nginx Proxy Manager 一键申请 SSL 证书,自动续期,解决阿里云SSL免费证书每3个月失效问题
文章目录 1、NPM 简介2、实战Step 1:环境搭建 也可以看作者安装笔记 Step 2:创建容器 2.1 在系统任意位置创建一个文件夹,此文档以~/nginx-proxy-manager为例。2.2 创建docker-compose.yaml2.3 启动NPM服务 Step 3:配置反向代理3…...
教你解决PUBG绝地求生游戏中闪退掉线无法重连回去的问题
《绝地求生》(PUBG),作为一款在全球范围内掀起热潮的战术竞技游戏,以其栩栩如生的战场环境和令人心跳加速的生存冒险博得了广大玩家的青睐。然而,一些玩家在经历了一场惊心动魄的对局后,却面临了一个不大不…...
24 Debian如何配置Apache2(4)LAMP+phpMyAdmin部署
作者:网络傅老师 特别提示:未经作者允许,不得转载任何内容。违者必究! Debian如何配置Apache2(4)LAMP+phpMyAdmin部署 《傅老师Debian小知识库系列之24》——原创 ==前言== 傅老师Debian小知识库特点: 1、最小化拆解Debian实用技能; 2、所有操作在VM虚拟机实测完成;…...
centos安装paddlespeech各种报错解决方案
背景 windows系统安装paddlespeech一路顺利 centos安装之前也是正常 今天centos再次安装各种报错,避免以后遇到浪费时间,记录下来,也给大家节约时间 报错 报错1 module numpy has no attribute complex. 解决方案 降低numpy # 1. 卸载当前numpy库 pip uninstall numpy…...
谈基于ATTCK框架的攻击链溯源
引言 网络安全在当今数字化时代变得尤为关键,而MITRE公司开发的ATT&CK框架则成为了安全专业人员的重要工具。ATT&CK是一种广泛使用的攻击行为分类和描述框架。其目的在于提供一个共同的语言,使安全专业人员能够更好地理解攻击者的行为和目标&…...
在Ubuntu下搭建自己的以太坊私有链
最近要对链及链上应用进行压测,为了方便操作及分析问题,就自己搭建了一个eth私链。当前版本安装官方指引发现有卡点,于是决定整理一个文档,为其他有需要的朋友提供便捷操作,节约时间。 一、环境配置 linux操作系统:Ubuntu 20.04.6 LTS (Focal Fossa) go version: go1…...
巩固学习4
python中函数逆置的几种方法 s input()for i in range(len(s)-1,-1,-1):#从最后一位开始,步长为-1print(s[i],end)用for语句循环逆置 s input() s list(s) n len(s) for i in range(n//2):s[i],s[n-1-i] s[n-1-i],s[i]#从中间反转字符串 res "".j…...
Conda安装rasterio报错
Conda安装rasterio报错 文章目录 Conda安装rasterio报错问题解决参考 问题 在conda环境中安装rasterio包之后,本来可以正常运行的,但是之后又重新安装了一个gdal,导致原来的引用rasterio的包的程序不可正常运行了 conda install rasterio c…...
linux安装 mysql
环境:centOS8 一、安装 1 安装wget库 sudo yum -y install wget 2. 安装 mysql 换yum源 亲测成功!!!!!! 换yum源 1.下载对应版本的repo文件 wget -O CentOS-Base.repo http://mirrors…...
暴力法解决最近对问题和凸包问题-实现可视化
目录 最近对问题 凸包问题 最近对问题 顾名思义就是采用蛮力法求出所有点之间的距离,然后进行比较找出第一个最近对,一个一个进行比较。 大概思路就是如图(每个圈代表一个数对) 第一个和其他四个比较 第二个和其他三个比较 …...
[Kubernetes] Rancher 2.7.5 部署 k8s
server: 192.168.66.100 master: 192.168.66.101 node1: 192.168.66.102 文章目录 1.rancher server 安装docker2.部署k8s3.kubeconfig4.测试集群 1.rancher server 安装docker 所有主机开通ipv4 vi /etc/sysctl.conf#加入 net.ipv4.ip_forward 1#配置生效 sysctl -prancher…...
码题杯 世界警察 思想:双指针
https://www.matiji.net/exam/brushquestion/4/4446/16A92C42378232DEB56179D9C70DC45C 双指针 思路是这样的,首先r指针向右走,如果r指针遇到了和l指针一样的,那么l指针就,一直加到r指针的位置,此时a[l]a[r]࿰…...
drawio 网页版二次开发(1):源码下载和环境搭建
目录 一 说明 二 源码地址以及下载 三 开发环境搭建 1. 前端工程地址 2. 配置开发环境 (1)安装 node.js (2)安装 serve 服务器 3. 运行 四 最后 一 说明 应公司项目要求,需要对drawio进行二次开发&…...
算法训练Day33 |● 509. 斐波那契数 ● 70. 爬楼梯 ● 746. 使用最小花费爬楼梯
509. 斐波那契数 class Solution { public:int fib(int n) {if(n<1) return n;int pre2 0;int pre1 1;int result 0;for(int i2; i<n; i ){result pre1pre2;pre2 pre1;pre1 result;}return result;} };参考文章:代码随想录- 509. 斐波那契数 70. 爬楼梯…...
【算法】滑动窗口——将x减到0的最小操作数
本节博客主要是讲的我解“将x减到0的最小操作数”这道题的思路历程,从最开始的想法到代码提交的详细记录,有需要借鉴即可。 目录 1.题目2.代码示例3.细节3.1left越界3.2特殊情况 4.总结 1.题目 题目链接:LINK 看题目意思是就是给你一个数X&…...
《引爆流量获客技术》实操方法,手把手教你搭建盈利流量池
[1]-先导课.mp4 [2]-第1节:设计客户终身价值的方法和买客户思维.mp4 [3]-第2节:【渠道模型】解决谁是我的客户如何找到.mp4 [4]-第3节:【诱饵模型】解决 如何获得更多的客户.mp4 [5]-第4节:【钩子模型】解决让目标客户主动找你…...
【记录】常见的前端设计系统(Design System)
解释一下设计系统的定义,以及在国内,都有那些优秀的设计系统可以学习,希望可以帮到大家。 什么是设计系统(Design System)? 设计系统(Design System)是一套综合性的指导原则、组件和规则&…...
如何使用Whisper音频合成模型
Whisper 是一个通用语音识别模型,由 OpenAI 开发。它可以识别多种语言的语音,并将其转换为文本。Whisper 模型采用了深度学习技术,具有高准确性和鲁棒性。 1、技术原理及架构 Whisper 的工作原理:音频被分割成 30 秒的片段&#…...
网络相关笔记
IPv4地址 IPv4地址通常以“点分十进制”形式书写,即四个0-255之间的十进制数,各数之间用英文句点(.)分隔,例如:192.0.2.1。总共32位的地址空间可以表示大约42亿个不同的地址。 IPv4地址结构包括ÿ…...
由C# yield return引发的思考
前言 当我们编写 C# 代码时,经常需要处理大量的数据集合。在传统的方式中,我们往往需要先将整个数据集合加载到内存中,然后再进行操作。但是如果数据集合非常大,这种方式就会导致内存占用过高,甚至可能导致程序崩溃。 …...
Debian系统简介
目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版ÿ…...
React Native在HarmonyOS 5.0阅读类应用开发中的实践
一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强,React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 (1)使用React Native…...
【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】
1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件(System Property Definition File),用于声明和管理 Bluetooth 模块相…...
python如何将word的doc另存为docx
将 DOCX 文件另存为 DOCX 格式(Python 实现) 在 Python 中,你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是,.doc 是旧的 Word 格式,而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...
相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...
Unit 1 深度强化学习简介
Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库,例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体,比如 SnowballFight、Huggy the Do…...
零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)
本期内容并不是很难,相信大家会学的很愉快,当然对于有后端基础的朋友来说,本期内容更加容易了解,当然没有基础的也别担心,本期内容会详细解释有关内容 本期用到的软件:yakit(因为经过之前好多期…...
Yolov8 目标检测蒸馏学习记录
yolov8系列模型蒸馏基本流程,代码下载:这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中,**知识蒸馏(Knowledge Distillation)**被广泛应用,作为提升模型…...
uniapp 字符包含的相关方法
在uniapp中,如果你想检查一个字符串是否包含另一个子字符串,你可以使用JavaScript中的includes()方法或者indexOf()方法。这两种方法都可以达到目的,但它们在处理方式和返回值上有所不同。 使用includes()方法 includes()方法用于判断一个字…...
打手机检测算法AI智能分析网关V4守护公共/工业/医疗等多场景安全应用
一、方案背景 在现代生产与生活场景中,如工厂高危作业区、医院手术室、公共场景等,人员违规打手机的行为潜藏着巨大风险。传统依靠人工巡查的监管方式,存在效率低、覆盖面不足、判断主观性强等问题,难以满足对人员打手机行为精…...
