当前位置: 首页 > news >正文

多个内网服务怎么统一管理?用Nginx Proxy Manager搭建HTTPS入口

前言

当NAS、博客、监控面板、智能家居和其他自建服务越来越多以后,真正麻烦的往往已经不是把软件运行起来,而是怎样管理这些分散的访问入口。

每个服务都有自己的IP和端口,局域网内使用时还能勉强记住;一旦需要绑定域名、启用HTTPS,或者让外部设备访问,就要开始修改Nginx配置、申请证书、设置转发规则。服务数量一多,配置文件会越来越复杂,任何一个端口、域名或语法写错,都可能导致页面无法打开。

Nginx Proxy Manager把这些原本需要手动编写的反向代理配置,放进了一个可视化管理界面。添加服务时,只需要填写访问域名、目标IP和端口,就可以建立代理规则;需要HTTPS时,也可以直接在页面中申请和管理SSL证书,不必反复修改配置文件。

本文将通过Docker部署Nginx Proxy Manager,完成管理后台初始化、代理主机创建、SSL证书申请和子路径转发设置。随后再结合cpolar建立固定公网入口,让部署在局域网中的多个Web服务,也能通过统一域名和HTTPS地址对外访问。

这套方案适合家庭实验室、NAS用户、个人开发者和需要管理多个内部系统的小型团队。Nginx Proxy Manager负责统一代理和证书管理,cpolar负责打通内外网络,两者配合后,可以把原本零散的端口入口整理成更清晰、更容易维护的访问体系。

1.什么是Nginx Proxy Manager?

Nginx Proxy Manager(简称 NPM) 是一个基于 Nginx 的开源反向代理管理工具,它提供了一个简单易用的 Web 图形界面,让你无需手动编写复杂的 Nginx 配置文件,就能轻松实现:

  • 域名反向代理(将 yourdomain.com 指向内网服务如 192.168.1.100:3000)
  • 自动申请和续期 Let’s Encrypt 免费 SSL 证书(一键启用 HTTPS)
  • 强制 HTTPS、HTTP/2、HSTS 等安全设置
  • 访问控制(IP 白名单、基础认证)
  • 多用户支持与权限管理

它解决了什么问题?

传统使用 Nginx 做反向代理时,你需要:

server{listen80;server_name app.example.com;location /{proxy_pass http://192.168.1.50:8080;proxy_set_header Host$host;}}

还要手动配置 HTTPS、申请证书、处理自动续期……对新手极不友好。

而 Nginx Proxy Manager 把这些操作全部图形化:

填域名 → 填内网地址 → 勾选“申请 SSL 证书” → 点保存

几秒钟就完成一套带 HTTPS 的反向代理!

核心功能

功能说明
可视化代理主机管理添加/编辑/删除代理规则,支持 WebSocket、自定义头部等
自动 SSL 证书集成 Let’s Encrypt,支持 HTTP 和 DNS 两种验证方式
强制 HTTPS自动将 HTTP 请求重定向到 HTTPS
访问控制可为每个代理设置 Basic Auth(用户名/密码)或 IP 限制
Docker 原生支持官方提供 Docker 镜像,一键部署

典型应用场景

  • 给家里的 NAS、Home Assistant、Pi-hole 添加域名和 HTTPS
  • 在一台云服务器上托管多个 Web 服务(如博客、Wiki、监控系统),通过不同域名区分
  • 快速为测试环境暴露公网地址(配合内网穿透)

注意事项

  • 服务器需有 公网 IP 才能自动申请 Let’s Encrypt 证书(除非使用 DNS Challenge)
  • 端口 80 和 443 必须开放(用于证书验证和 HTTPS 服务)
  • 初始密码务必修改!

它让反向代理和 HTTPS 配置变得像填表一样简单,特别适合个人开发者、家庭实验室用户或小型团队,是现代轻量级网关的理想选择。

2.安装Nginx Proxy Manager

创建一个目录来存放Docker Compose文件和相关配置文件:

mkdirnginx-proxy-managercdnginx-proxy-manager

方法一:在项目目录中创建一个名为docker-compose.yml的文件,并添加以下内容:

services: app: image:'jc21/nginx-proxy-manager:latest'restart: unless-stopped ports: -'80:80'-'81:81'-'443:443'volumes: - ./data:/data - ./letsencrypt:/etc/letsencrypt

Nginx Proxy Manager还可以使用MySQL来进行数据存储。

方法二:Nginx Proxy Manager使用MySQL进行数据存储的示例,创建一个名为docker-compose.yml的文件,并添加以下内容(我采用的这个办法):

version:'3.8'services: app: image:'jc21/nginx-proxy-manager:latest'restart: unless-stopped ports:# These ports are in format <host-port>:<container-port>-'80:80'# Public HTTP Port-'443:443'# Public HTTPS Port-'81:81'# Admin Web Port# Add any other Stream port you want to expose# - '21:21' # FTPenvironment:# Mysql/Maria connection parameters:DB_MYSQL_HOST:"db"DB_MYSQL_PORT:3306DB_MYSQL_USER:"npm"DB_MYSQL_PASSWORD:"npm"DB_MYSQL_NAME:"npm"# Uncomment this if IPv6 is not enabled on your host# DISABLE_IPV6: 'true'volumes: - ./data:/data - ./letsencrypt:/etc/letsencrypt depends_on: - db db: image:'jc21/mariadb-aria:latest'restart: unless-stopped environment: MYSQL_ROOT_PASSWORD:'npm'MYSQL_DATABASE:'npm'MYSQL_USER:'npm'MYSQL_PASSWORD:'npm'MARIADB_AUTO_UPGRADE:'1'volumes: - ./mysql:/var/lib/mysql

在项目目录中运行以下命令启动Nginx Proxy Manager,这将下载所需的Docker镜像并启动容器:

docker-composeup-ddockercompose up-d

部署完成后,在浏览器中输入http://IP:81就能看到Nginx Proxy Manager的Web界面:

登录时,记得记住登录账号及密码:

登录成功:

负载均衡工具:

3.配置Domain Names

“Domain Names”(域名)是互联网上用于标识网站、服务或资源的人类可读的地址,用来替代难以记忆的数字IP地址。

举个例子:

  • 你访问 https://www.google.com,其中 google.com 就是一个域名。
  • 实际上,你的电脑会通过 DNS(域名系统)把 google.com 转换成一个 IP 地址(比如 142.250.185.206),然后连接到 Google 的服务器。

域名的核心作用:

  • 方便记忆
  • 比如 baidu.com 比 220.181.38.148 容易记多了。
  • 标识品牌或服务
  • 公司、个人、组织通过域名建立在线身份(如 apple.com、github.com)。
  • 支持网站和邮件服务
    • 网站:https://yourname.com
    • 邮箱:you@yourname.com

跟我一起操作吧!我们用cpolar来打造。

3.1 什么是cpolar?

cpolar是一款安全高效的内网穿透工具,无需公网IP或复杂配置,只需一条命令,即可将本地服务器、Web服务或任意端口映射到公网,让你随时随地远程访问内网应用,特别适合开发调试、远程运维和应急部署等场景。

3.2 部署cpolar

cpolar 可以将你本地电脑中的服务(如 SSH、Web、数据库)映射到公网。即使你在家里或外出时,也可以通过公网地址连接回本地运行的开发环境。

❤️以下是安装cpolar步骤:

使用一键脚本安装命令:

sudocurlhttps://get.cpolar.sh|sh

安装完成后,执行下方命令查看cpolar服务状态:(如图所示即为正常启动)

sudosystemctl status cpolar

Cpolar安装和成功启动服务后,在浏览器上输入虚拟机主机IP加9200端口即:【http://ip:9200】访问Cpolar管理界面,使用Cpolar官网注册的账号登录,登录后即可看到cpolar web 配置界面,接下来在web 界面配置即可:

打开浏览器访问本地9200端口,使用cpolar账户密码登录即可,登录后即可对隧道进行管理。

3.3 配置Domain Names

使用cpolar为其配置二级子域名,该地址为固定地址,不会随机变化。

点击左侧的预留,选择保留二级子域名,地区选择china Top,然后设置一个二级子域名名称,我使用的是npm1,大家可以自定义。填写备注信息,点击保留。

登录cpolar web UI管理界面后,点击左侧仪表盘的隧道管理——创建隧道:

  • 隧道名称:可自定义,本例使用了:nginx,注意不要与已有的隧道名称重复
  • 协议:http
  • 本地地址:80
  • 域名类型:固定二级子域名
  • Sub Domain:填写保留成功的二级子域名
  • 地区:选择China Top

打开在线隧道列表,此时可以看到公网地址名称变成了保留和固定的二级子域名名称,这样一个永久不会变化的二级子域名公网网址即设置好了(即Domain Names )。

4.配置反向代理

4.1 添加Proxy Host

在Web界面中,可以添加新的代理主机来管理反向代理配置,点击Proxy Hosts(依次点击HostsProxy Hosts → Add Proxy Host):

配置Details:

配置说明:

Domain Names :填写网站域名,需要上面做好DNS解析,把域名绑定到服务器IP Scheme : 选择HTTP或HTTPS。默认http即可,除非有自签名证书 Forward Hostname/IP :填写要代理到的目标主机名或IP地址,或者Docker容器内部IP(NPM和程序服务在同一台服务器上) Forward Port:填写目标主机的端口号,这里是NPM管理界面81端口 Cache Assets :缓存,根据需求选择打开 Block Common Exploits: 阻止常见的漏洞,根据需求选择打开 Websockets Support :WS支持,根据需求选择打开 Access List: NPM自带的一个限制访问功能

将一个域名(如 npm1.cpolar.top)通过反向代理,转发到你内网的一台服务器(IP: 192.168.42.140,端口 81)上,从而实现从公网访问你的本地服务。

点击“save”后,保留成功:

点击如图所示:

即可访问到Nginx Proxy Manager的管理界面:

将一个域名(如 npm1.cpolar.top)通过反向代理,转发到你内网的一台服务器(IP: 192.168.52.213,端口 3080)上,从而实现从公网访问你的本地服务。

即可访问到192.168.52.213:3080的界面:

4.2 一键申请SSL证书

现在网页显示的是不安全:

选择创建一个新的证书,勾选强制SSL,填写邮件、同意条款,点击Save即可申请SSL证书:

刷新后,恢复正常:

4.3 设置/app的请求

将外部访问https://npm1.cpolar.top/app/的请求,反向代理到内网服务器192.168.50.213:9090上,让外界可以通过公网域名访问你本地部署的应用。

点击如图所示位置:

添加下列数据,使用正则重写规则处理路径:

rewrite ^/app/?(.*)$ /$1break;

点击如图所示:

添加下列数据:

location=/app{return301https://$host/app/;}

访问https://npm1.cpolar.top/app/,即可跳转到目标页面。

总结

完成部署后,Nginx Proxy Manager就成为了多个内网服务之间的统一入口。以后新增应用时,不必再手动编写完整的Nginx配置,只需要在管理页面中填写域名、目标地址和端口,就可以建立新的代理规则。

SSL证书管理也会变得更直观。符合证书申请条件的域名,可以直接在代理主机中申请并启用HTTPS,再根据需要开启强制SSL、HTTP/2、HSTS和访问控制。这样,证书、域名和转发规则都能够集中管理,不需要分散在不同配置文件中逐一维护。

结合cpolar后,即使部署环境没有公网IP,也可以先为Nginx Proxy Manager的入口建立固定公网地址,再由NPM把不同请求转发到局域网中的具体服务。NAS、管理面板、博客和其他Web应用依然运行在原来的设备中,但访问入口可以逐渐变得统一。

需要注意的是,反向代理只是负责转发流量,并不会自动保证后端服务安全。正式使用时,应及时修改NPM默认管理员密码,限制管理后台的访问范围,并为重要服务增加独立登录、访问名单或其他认证措施。

当服务数量越来越多时,真正提升效率的不是记住更多端口,而是建立一套清晰的入口管理方式。Nginx Proxy Manager负责整理域名、代理和证书,cpolar负责把入口带到公网,这样内网中的多个应用才能从“分别能访问”,逐渐变成“统一、稳定、方便维护”。

http://www.jsqmd.com/news/1139158/

相关文章:

  • 内网渗透第一步——信息收集决定了你能走多远
  • Day15 SpringIOC容器启动全流程:从ApplicationContext到Bean实例化
  • 触觉引导模型选型指南:环境适配四维解构法
  • VisualCppRedist AIO:3步彻底终结Windows软件运行库安装难题
  • 机械设计形位公差避坑:基准统一与5种常见测量方法对应关系
  • 天落地 GLM-5.2:昇腾 910B 双机分布式推理保姆级教程(纯实操命令,全文约 4000 字)
  • 南京南德管理|组织效能培训2026企业高频FAQ问答
  • 网页资源批量下载终极方案:告别繁琐,一键搞定所有文件
  • 汽车雨刷喷水电机故障诊断与DIY维修指南
  • 卡特加特是一家人工智能公司吗
  • 无创血液检测预警老年远期死亡:四种神经退行性标志物谁更具预测优势?
  • TwinCAT 3 配置汇川 IS620N 伺服:5个关键 COE 启动参数详解与避坑指南
  • 百考通答辩PPT生成:智能辅助,让学术答辩从容自信,专业而不失个性
  • Polars 性能碾压 Pandas 吗?千万级真实业务数据实测给出答案
  • 宝可梦数据集在军事AI训练中的应用与合规分析
  • PCB 工艺参数实战指南:从 0.3mm 过孔到 0.16mm 线距的 7 项设计避坑清单
  • 零基础实战:基于 PaddleVideo 与 PP-TSM 的自定义视频分类全流程指南
  • 济南AI智能体公司怎么选?从价格、案例到交付能力的完整选型手册
  • 通过 pip 直接安装免费版本:
  • 2026年下半年AI量化提效,先说清真正问题
  • 企业软件选型实操手册:规避开发风险,锁定优质交付
  • 企业AI建设的终局是认知体系
  • python-LangGraph框架(3-31-LangGraph 「合并式状态管理」的原理与实践)
  • 对比进口低频ADCP,偶信ADCP 75K在采购与维保层面有哪些高性价比优势?
  • 矿石成分与酸耗的‌物料衡算(配矿均化、高压反应釜)
  • 【JAVA毕设源码分享】基于springboot元宇宙平台的房屋租赁管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)
  • Lerobot repository解析
  • 基于SpringBoot的环保知识普及平台的设计与实现毕业设计任务书
  • 上班族备战 10 月成人高考怎么高效备考?
  • python-LangGraph框架(3-29-LangGraph 「覆盖式状态」的原理与实践)