nginx-proxy-manager实现反向代理+自动化证书(实战)

欢迎来到我的博客,代码的世界里,每一行都是一个故事


在这里插入图片描述

🎏:你只管努力,剩下的交给时间

🏠 :小破站

cnginx-proxy-manager实现反向代理+自动化证书

    • nginx-proxy-manager是什么
    • 搭建nginx-proxy-manager
      • 搭建
      • 成功示意图
    • 实现证书创建加续签
    • 端口转发(两种实现)
      • 基于本机ip
      • 基于docker网络
    • 报错解决

nginx-proxy-manager是什么

Nginx Proxy Manager 是一个开源的、基于 Web 界面的反向代理管理工具。它的核心是基于 Nginx 和 Docker 的,旨在提供一种简单易用的方式来管理 Nginx 反向代理、SSL 证书和各种代理设置。

主要功能

​ • 基于 Web 界面的管理:提供友好的 Web 用户界面,用户无需手动编辑 Nginx 配置文件。

​ • 反向代理:可以轻松地为多个服务或网站设置反向代理规则,将外部请求根据域名或路径转发到内部的不同服务。

​ • 自动获取 SSL 证书:集成了 Let’s Encrypt,可以轻松为站点获取和续订免费的 SSL 证书。

​ • 访问控制:可以通过设置用户名和密码来保护特定的路径或站点。

​ • 端口映射:支持将请求从外部端口映射到内部服务的不同端口。

使用场景

Nginx Proxy Manager 主要用于需要在多个服务之间进行反向代理的场景,比如你有多个 Web 服务(如个人博客、Nextcloud、GitLab 等)需要公开在互联网上,但你希望通过单一的入口来管理这些服务。它可以简化反向代理和 SSL 证书管理,尤其适合以下情况:

​ • 个人或小型团队使用 Docker 部署多个 Web 服务。

​ • 希望通过一个简单的 Web 管理界面来管理所有代理规则和 SSL 证书。

​ • 需要简单的域名到服务的映射,但不想深入研究 Nginx 配置文件。

特点

​ • 基于 Docker 容器的部署方式,简单方便。

​ • 集成 Let’s Encrypt,可以自动获取和管理 SSL 证书。

​ • 具有直观的 Web 界面,无需编写复杂的 Nginx 配置文件。

​ • 轻松管理子域、端口转发等功能。

搭建nginx-proxy-manager

我这里使用的是docker-compose搭建的,比较方便,如果以后迁移服务器的时候也比较简单

搭建

version: '3'
services:
  npm:
    image: 'jc21/nginx-proxy-manager:latest'
    restart: unless-stopped
    ports:
      - '80:80'       # HTTP
      - '10811:81'       # Nginx Proxy Manager 管理界面
      - '443:443'     # HTTPS
    volumes:
      - ./data:/data  # 数据卷,用于存储 Nginx 配置和证书
      - ./letsencrypt:/etc/letsencrypt  # 证书存储卷

  db:
    image: 'jc21/mariadb-aria:latest'
    restart: unless-stopped
    environment:
      MYSQL_ROOT_PASSWORD: 'ua1wlnkZzzLu7RrB'  # MySQL root 用户密码
      MYSQL_DATABASE: 'npm'                      # NPM 使用的数据库
      MYSQL_USER: 'npm'                          # 数据库用户名
      MYSQL_PASSWORD: 'ua1wlnkZzzLu7RrB'         # 数据库用户密码
    volumes:
      - ./mysql:/var/lib/mysql

db这里可以不用也行,看自己

注意:这里我没有使用81端口,因为1000以下的端口在某些情况下会被保护的,比如我使用穿透,就会报错

成功示意图

image-20241025104211847

实现证书创建加续签

image-20241025104440164

它支持一键创建多个证书,而且速度很快,也可以支持一键续订

续签

端口转发(两种实现)

基于本机ip

这里的本机ip是ifconfig中的ip,并非127.0.0.1,因为我们的npm是在容器中部署的,所以要想实现通信只能通过本机内网ip实现。

image-20241025105736249

基于docker网络

首先创建一个网络,然后让其加入这个网络,就可以直接用容器名称访问了,如下图

image-20241025112745130

报错解决

如果你的证书被删除了,但是你的转发中存在了该证书,就会报如下错

搭建的nginx proxy manager创建证书的时候报错CommandError: nginx: [warn] “listen ... http2”指令已弃用,请在 /data/nginx/proxy_host/1.conf:19 中改用“http2”指令
nginx:[警告]“listen ... http2”指令已弃用,请在 /data/nginx/proxy_host/1.conf:20 中改用“http2”指令
nginx:[警告]“listen ... http2”指令已弃用,请在 /data/nginx/proxy_host/2.conf:19 中使用“http2”指令
nginx:[警告] 在 /data/nginx/proxy_host/2.conf:19 中为 0.0.0.0:443 重新定义了协议选项
nginx:[警告]“listen ... http2”指令已弃用,请在 /data/nginx/proxy_host/2.conf:20 中改用“http2”指令
nginx:[警告] 在 /data/nginx/proxy_host/2.conf:20 中为 [::]:443 重新定义了协议选项
nginx:[警告]“listen ... http2”指令已弃用,请在 /data/nginx/proxy_host/3.conf:19 中使用“http2”指令
nginx:[警告]“listen ... http2”指令已弃用,请在 /data/nginx/proxy_host/3.conf:20 中使用“http2”指令
nginx:[警告]“listen ... http2”指令已弃用,请在 /data/nginx/proxy_host/4.conf:19 中使用“http2”指令
nginx:[警告]“listen ... http2”指令已弃用,请在 /data/nginx/proxy_host/4.conf:20 中改用“http2”指令
nginx:[emerg] 无法加载证书“/etc/letsencrypt/live/npm-2/fullchain.pem”:BIO_new_file()失败(SSL:错误:80000002:系统库::没有此文件或目录:调用 fopen(/etc/letsencrypt/live/npm-2/fullchain.pem,r)错误:10000080:BIO 例程::没有此文件)
nginx:配置文件/etc/nginx/nginx.conf 测试失败
    位于 /app/lib/utils.js:16:13
    在 ChildProcess.exithandler (节点:child_process:430:5)
    在 ChildProcess.emit (节点:事件:519:28)
    在可能关闭(节点:内部/子进程:1105:16)
    在 ChildProcess._handle.onexit (节点:internal/child_process:305:5)

此时要先停掉转发,在新增创建即可

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/909949.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

人才画像系统:助力企业打造动态人才成长体系

在当今竞争激烈的市场环境中,人才已成为企业发展的核心竞争力。为了满足企业发展对人才的需求,人才画像系统应运而生,通过以岗位胜任力模型为基础定义人才标准,多维度采集员工信息进行人才对标和盘点,为企业的人才选拔…

【Hadoop和Hbase集群配置】3台虚拟机、jdk+hadoop+hbase下载和安装、环境配置和集群测试

目录 一、环境 二、虚拟机配置 三、 JDK、Hadoop、HBase的安装和配置 【安装和配置JDK】 【安装和配置Hadoop】 【安装和配置Hbase】 四、 Hadoop和HBase集群测试 【Hadoop启动测试】 【Hbase启动测试】 一、环境 OS: CentOS-7 JDK: v1.8.0_131 Hadoop: v2.7.6 Hb…

制作一个3D建模只需10秒:腾讯发布3D开源模型“混元3D”

混元 3D 模型 腾讯在科技领域投下一颗重磅炸弹,宣布推出混元 3D 生成大模型 “hunyuan3d - 1.0”,这是业界首个同时支持文字、图像生成 3D 的开源模型。它具有生成速度快、泛化能力强、可控性好等特点,直接引起了 AI 界众人的关注。 混元3D-1…

情怀系列国际版棋牌完整源码具备强大的多语言扩展功能,涵盖了900多款子游戏,专为全球市场的游戏开发和运营设计。

情怀棋牌源代码的服务器端使用JAVA和Node.js开发,采用RocketMQ作为消息队列中间件,有效防止服务器堵塞、消峰。数据库使用MySQL,媒体存储采用MongoDB,缓存系统使用Redis。管理后台则采用PHP语言开发。 客户端使用Cocos Creator进…

SpringBoot3集成Junit5

目录 1. 确保项目中包含相关依赖2. 配置JUnit 53. 编写测试类4、Junit5 新增特性4.1 注解4.2 断言4.3 嵌套测试4.4 总结 在Spring Boot 3中集成JUnit 5的步骤相对简单。以下是你可以按照的步骤: 1. 确保项目中包含相关依赖 首先,确保你的pom.xml文件中…

Google Guava 发布订阅模式/生产消费者模式 使用详情

目录 Guava 介绍 应用场景举例 1. 引入 Maven 依赖 2. 自定义 Event 事件类 3. 定义 EventListener 事件订阅者 4. 定义 EventBus 事件总线 5. 定义 Controller 进行测试 Guava 介绍 Guava 是一组来自 Google 的核心 Java 库,里面包括新的集合 类型&#xff08…

Idea如何推送项目到gitee

第一步:先在你的gitee创建一个仓库 第二步: 点击推送 点击定义远程,将URL换成你仓库的,填好你的用户名和密码 可以看到已经推送到仓库了

gdb和make工具

gdb工具: GDB的主要功能 断点设置:允许开发者在特定的代码行设置断点,当程序执行到该行时会自动暂停,方便开发者进行调试和分析。 变量查看与修改:在程序运行过程中,可以查看和修改变量的值,以…

一周内从0到1开发一款 AR眼镜 相机应用?

目录 1. 📂 前言 2. 💠 任务拆分 2.1 产品需求拆分 2.2 开发工作拆分 3. 🔱 开发实现 3.1 代码目录截图 3.2 app 模块 3.3 middleware 模块 3.4 portal 模块 4. ⚛️ 拍照与录像 4.1 前滑后滑统一处理 4.2 初始化 View 以及 Came…

推荐一款功能强大的数据库开发管理工具:SQLite Expert Pro

SQLite Expert Professional是一个功能强大的工具,旨在简化SQLite3数据库的开发。 它是SQLite的一个功能丰富的管理和开发工具,旨在满足所有用户从编写简单SQL查询到开发复杂数据库的需求。 图形界面支持所有SQLite功能。 它包括一个可视化查询构建器&a…

C#与C++交互开发系列(十七):线程安全

前言 在跨平台开发和多线程编程中,线程安全是不可忽视的重要因素。C和C#中提供了各自的线程同步机制,但在跨语言调用中,如何确保数据一致性、避免数据竞争和死锁等问题,是开发人员必须考虑的重点。 本文将介绍在C#和C交互开发中确…

数据库SQL学习笔记

第 1 章 绪论 1.1 数据库系统概述 1.1.1 四个基本概念 数据库系统(DBS) 定义:是指在计算机系统中引入数据库后的系统构成 构成:数据库,数据库管理系统(及其开发工具),应用系统,数据库管理员…

Java项目实战II基于Spring Boot的智慧生活商城系统的设计与实现(开发文档+数据库+源码)

目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发,CSDN平台Java领域新星创作者,专注于大学生项目实战开发、讲解和毕业答疑辅导。 一、前言 随着科技的飞速发展,人们的…

.net Core 使用Panda.DynamicWebApi动态构造路由

我们以前是通过创建controller来创建API,通过controller来显示的生成路由,这里我们讲解下如何不通过controller,构造API路由 安装 Panda.DynamicWebApi 1.2.2 1.2.2 Swashbuckle.AspNetCore 6.2.3 6.2.3添加ServiceAction…

[ 内网渗透实战篇-1 ] 单域环境搭建与安装域环境判断域控定位CS插件装载CS上线

🍬 博主介绍 👨‍🎓 博主介绍:大家好,我是 _PowerShell ,很高兴认识大家~ ✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 🎉点赞➕评论➕收藏 养成习…

还在使用ElementUI不如试一试DaisyUI,DaisyUI: Tailwind CSS 的高效组件库,

DaisyUI: Tailwind CSS 的高效组件库 daisyUI官网:https://daisyui.com/ 在现代网页开发中,快速构建美观且响应式的用户界面是每个开发者追求的目标。Tailwind CSS 是一个流行的实用程序优先的 CSS 框架,它允许开发者直接在 HTML 中使用预…

《大数据与人工智能:提升数据质量与数量的利器》

《大数据与人工智能:提升数据质量与数量的利器》 一、大数据与人工智能的融合趋势二、大数据增加数据数量的方法(一)不同途径的数据增量(二)数据增强的多样方法 三、人工智能提升数据数量的手段(一&#xf…

通义灵码实操—飞机大战游戏

通义灵码实操—飞机大战游戏 有没有想象过自己独立编写一个有趣的小游戏。在本实践课程中,你不仅可以实现这个想法,而且还将得到通义灵码智能编程助手的支持与指导。我们将携手步入编程的神奇世界,以一种简洁、高效且具有创造性的方式&#…

AI之硬件对比:据传英伟达Nvidia2025年将推出RTX 5090-32GB/RTX 5080-24GB、华为2025年推出910C/910D

AI之硬件对比:据传英伟达Nvidia2025年将推出RTX 5090-32GB/RTX 5080-24GB、华为2025年推出910C/910D 目录 Nvidia的显卡 Nvidia的5090/5080/4090/4080:据传传英伟达Nvidia RTX 5090后续推出32GB版且RTX 5080后续或推出24GB版 RTX 5090相较于RTX 4090&…