Nginx Proxy Manager教程:轻松实现反向代理与SSL证书自动化

Nginx Proxy Manager教程:轻松实现反向代理与SSL证书自动化

你是否正处于这样一个阶段?你的云服务器,已经不再是只跑着一个孤零零的博客了。在你的“数字领地”上,你可能已经搭建了:

  • 一个用WordPress搭建的官方网站。
  • 一个用Nextcloud搭建的私有云盘。
  • 一个用Uptime Kuma搭建的服务监控页面。
  • 还有一个你用Node.js写的、正在测试中的个人项目……

它们就像一座繁华都市里的不同建筑,每一个都在自己的“房间号”(端口号,如:80, :5000, :3001)里默默运行。但问题来了:你总不能让你的用户,或者你自己,每次都通过http://你的IP:5000这样又丑又难记的“门牌号”来访问这些服务吧?你希望它们每一个,都能拥有一个专业、好记的“域名地址”,比如:

  • www.mycompany.com -> 指向你的WordPress网站
  • cloud.mycompany.com -> 指向你的Nextcloud
  • status.mycompany.com -> 指向你的Uptime Kuma

更重要的是,你希望所有这些域名,都能自动加上那把象征着“安全”与“专业”的HTTPS绿色小锁

在过去,要实现这一切,你需要去手动编写极其复杂、极易出错的Nginx或Apache的配置文件。那密密麻麻的括号、分号和指令,足以让任何一个新手望而生畏。你就像一个大厦管理员,需要手动地为每一位访客,去操作一部老式的、需要手动接线的“电话总机”。

如果我告诉你,现在有一个“智能总机”,你只需要在一个漂亮的图形界面里,告诉它:“嘿,所有找‘张三’的电话,都给我转到8080分机”,它就能自动处理好剩下的一切,甚至还为每一通电话都加上了“最高级别的加密”呢?

这个“智能总机”,就是我们今天的主角——Nginx Proxy Manager。一个能让你用鼠标,轻松驾驭“反向代理”这匹“烈马”的终极神器。


第一章:“前台总机”的艺术 —— 为什么你需要一个“反向代理”?

在我们安装之前,你必须先从灵魂深处理解,“反向代理”这个听起来很酷的概念,到底是什么,以及它为什么如此重要。

  • 你的服务器: 把它想象成一栋五星级酒店
  • 你的各种服务(网站、应用): 就是酒店里不同的客房、餐厅、健身房,每个都有自己的内部房间号(比如localhost:8080, 172.18.0.5:3001)。
  • 没有反向代理时: 你的酒店没有前台。所有的客人都得拿着一张复杂的内部地图,自己摸索着去找对应的房间。而且,每个房间都需要自己单独安装一套安保系统,极其混乱和不安全。

而Nginx Proxy Manager,就是你为这家五星级酒店,聘请的一位全能、优雅、且配备了顶级安保团队的“金牌大堂经理”。

这位“大堂经理”会站在酒店唯一的、华丽的大门口(你服务器的80和443端口),为你完成三件大事:

  1. “智能引路” (One IP, Infinite Services): 客人来到大门口,只需要说出他想去的“目的地名称”(比如blog.yourdomain.com)。“大堂经理”会立刻查询自己的“宾客名单”,然后微笑着,为他刷开通往对应“内部房间”(比如localhost:8080)的专属通道。他让你的一个公网IP,拥有了托管成百上千个不同网站和服务的能力。
  2. “统一安保” (Centralized SSL Management): “大堂经理”本身就自带了一支最专业的“安保团队”(集成了Let’s Encrypt)。所有的客人,在进入大门的那一刻,他们的所有通信,都会被强制进行最高级别的“加密”。酒店内部的各个房间,则无需再单独考虑安保问题,可以安心地“开着门”提供服务。这意味着,你所有网站的SSL证书,都可以在一个地方,进行统一的申请、管理和自动续期。这,简直是运维的福音!
  3. “隐藏内部结构” (Enhanced Security): 因为所有客人都只和“大堂经理”打交道,他们永远不会知道你酒店内部的“房间号”和“楼层结构”。这种“信息隐藏”,极大地提升了你内部服务的安全性,让攻击者无法直接窥探和攻击你的后端应用。

现在,你是不是已经迫不及待,想为你的“酒店”聘请这位“金牌大堂经理”了?

第二章:聘用与入职 —— 用Docker光速安装Nginx Proxy Manager

和我们之前所有的“神器”一样,部署Nginx Proxy Manager(简称NPM)的最佳方式,依然是Docker

第一步:创建“经理办公室”和“设计图纸”

  1. SSH登录你的Linux服务器。
  2. 在一个合适的目录下(比如/root/docker),创建一个npm文件夹并进入: mkdir -p npm && cd npm
  3. 创建docker-compose.yml文件: nano docker-compose.yml
  4. 将下面这份“聘用合同”,完整地复制粘贴进去:

YAML

version: "3"
services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    container_name: npm_app
    restart: unless-stopped
    ports:
      # 公开的HTTP和HTTPS端口
      - '80:80'
      - '443:443'
      # 管理后台的端口
      - '81:81'
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt

# 注意:NPM 2.11版本后,不再需要独立的数据库服务

5.保存退出 (Ctrl+X -> Y -> Enter)。

    第二步:“经理”上岗!

    npm目录下,执行启动命令: sudo docker-compose up -d

    几秒钟后,你的“金牌大堂经理”,就已经正式上岗了!别忘了去你的云服务商“安全组”,放行我们这里用到的80, 443, 81三个端口。

    第三章:下达第一份“工作指令” —— 配置你的第一个反向代理

    现在,让我们来亲身感受一下这位“经理”的工作效率。

    场景: 我们要把之前用Docker搭建的Uptime Kuma(假设它在http://服务器IP:3001),通过status.yourdomain.com这个好记的域名,用HTTPS的方式,安全地发布出去。

    第一步:登录“经理后台”

    • 在浏览器里,访问 http://你的服务器IP:81
    • 你会看到NPM的登录界面。
    • 默认初始账号:
      • Email: admin@example.com
      • Password: changeme
    • 首次登录,系统会强制你修改一个安全的管理员密码。

    第二步:添加“引路规则”

    1. 登录后,点击顶部的Hosts -> Proxy Hosts
    2. 点击那个蓝色的Add Proxy Host按钮。一个清晰的表单出现了,这就是你给“经理”下达指令的地方。
    3. 填写“Details”标签页:
      • Domain Names: 填入你的“公众访问地址”,也就是status.yourdomain.com
      • Scheme: 保持http即可。
      • Forward Hostname / IP: 这里填写你“内部房间”的地址。因为我们的NPM和Uptime Kuma都是Docker容器,最简单的方式,就是填写你服务器的内网或公网IP地址
      • Forward Port: 填写你“内部房间”的“门牌号”,也就是3001
      • Block Common Exploits: 务必勾选! 这是“经理”附赠的免费“基础安保”,能帮你过滤掉一堆常见的网络攻击。
    4. 配置“顶级安保” (SSL标签页)
      • 点击上方的SSL选项卡。
      • SSL Certificate的下拉框里,选择**Request a new SSL Certificate**。
      • 勾选Force SSL。这会强制所有访客,都走我们最安全的HTTPS加密通道。
      • 勾选I Agree... 同意Let’s Encrypt的服务条款。
      • 最后,点击那个Save按钮。

    现在,奇迹发生了。NPM会自动为你申请Let’s Encrypt的免费证书,自动配置好所有复杂的Nginx规则,自动处理好证书的续期……

    几秒钟后,当页面跳转回列表时,你的第一个反向代理,就已经完美地开始工作了!

    第三步:验收成果!

    在浏览器里,直接访问 https://status.yourdomain.com

    你看到的,不再是那个需要带端口号的丑陋地址,而是一个拥有“绿色小锁”、专业、安全的正式站点!

    回想一下,整个过程,你可曾写过一行Nginx配置文件?可曾敲过一条Certbot命令?没有!你只是在一个漂亮的界面里,填了几个空,点了几个按钮。

    这,就是Nginx Proxy Manager的“降维打击”。

    第四章:解锁“经理”的更多“隐藏技能”

    • “门禁卡”系统 (Access Lists): 你的某个内部服务(比如一个测试后台)不希望任何人都能看到?在NPM的Access Lists里,你可以轻松创建一个“门禁名单”。然后,在配置代理时,把它应用上。这样,访客在访问这个域名时,会先被要求输入你设定的用户名和密码,才能看到真正的页面。
    • “自动跳转”服务 (Redirection Hosts): 你换了新域名?或者想让http自动跳转到https?在Redirection Hosts里,填上你的旧地址和新地址,就能轻松搞定301/302重定向,对SEO极其友好。

    Nginx Proxy Manager,这个“神器”,它真正做到的,是**“让专业回归简单”**。

    它把Nginx这个强大到可以驱动半个互联网的“核反应堆”,变成了一个我们普通人也能安全、轻松操作的“傻瓜式电饭煲”。它让你服务器上的每一个应用,都能拥有一个体面的“身份”(域名),穿上一件安全的“盔甲”(HTTPS)。

    它让你管理服务器,不再是一件充满恐惧和挫败感的“苦差事”,而变成了一场充满创造力和掌控感的、优雅的游戏。

    现在,就去为你那栋日益繁荣的“数字酒店”,聘请这位无所不能的“金牌大堂经理”吧。

    知识库

    如何实现内网穿透?超详细FRP自建服务器配置指南

    2025-9-24 9:47:15

    实操指南知识库

    服务器硬件模块化升级:面向高性能计算的未来设计

    2025-1-6 13:27:01

    0 条回复 A文章作者 M管理员
      暂无讨论,说说你的看法吧