轻松上手Nginx Proxy Manager:安装、配置与实战

简介: Nginx Proxy Manager (NPM) 是一款基于 Nginx 的反向代理管理工具,提供直观的 Web 界面,方便用户配置和管理反向代理、SSL 证书等。本文档介绍了 NPM 的安装步骤,包括 Docker 和 Docker Compose 的安装、Docker Compose 文件的创建与配置、启动服务、访问 Web 管理界面、基本使用方法以及如何申请和配置 SSL 证书,帮助用户快速上手 NPM。
安装部署
概述
Nginx Proxy Manager (NPM) 是一个基于 Nginx 的反向代理管理工具,旨在简化 Nginx 的配置和管理。它提供了一个直观的 Web 界面,使用户可以轻松地设置和管理反向代理、SSL 证书、访问控制等功能。
官网:https://nginxproxymanager.com/
GitHub:https://github.com/NginxProxyManager/nginx-proxy-manager
安装Docker和Docker Compose
如果你的系统上还没有安装Docker和Docker Compose,你可以根据你的操作系统参考官方文档进行安装:
创建项目目录
创建一个目录来存放Docker Compose文件和相关配置文件:
mkdir nginx-proxy-manager
cd nginx-proxy-manager
创建Docker Compose文件
在项目目录中创建一个名为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,这将下载所需的Docker镜像并启动容器。
docker-compose up -d
## 如果使用docker-compose-plugin
docker compose up -d
数据存储方式说明
Nginx Proxy Manager默认使用SQLite数据库来存储其数据,包括配置、代理主机信息、SSL 证书等。除此之外,Nginx Proxy Manager还可以使用MySQL来进行数据存储。
以下是一个docker-compose.yml文件,Nginx Proxy Manager使用MySQL进行数据存储的示例
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' ## FTP
environment:
## Mysql/Maria connection parameters:
DB_MYSQL_HOST: "db"
DB_MYSQL_PORT: 3306
DB_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
Web管理控制台
访问Web界面
一旦容器启动,你可以通过浏览器访问Nginx Proxy Manager的Web界面。默认地址是http://<your-server-ip>:81。

登录
首次登录时,使用以下默认凭据
Email: [email protected] Password: changeme
登录后,系统会提示更改默认密码。

基本使用
域名与IP绑定
在域名管理服务商那里添加域名与IP的绑定关系。
这里添加一条DNS解析,也就是创建一个二级域名:类型:A、名称:npm、IP:服务器IP。
这表示:访问二级域名npm.域名即可访问服务IP。

添加代理主机
在Web界面中,可以添加新的代理主机来管理反向代理配置。
点击Proxy Hosts选项卡

然后点击Add Proxy Host按钮

在添加代理主机的页面中,填写以下信息:

配置说明
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自带的一个限制访问功能
注意: 这里填的是172.17.0.1,为Docker容器内部的IP地址。可以通过下面的命令查询:
[root@vm ~]## ip addr show docker0
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
link/ether 02:42:39:63:84:15 brd ff:ff:ff:ff:ff:ff
inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
valid_lft forever preferred_lft forever
保存并应用配置
填写完所有必要的信息后,点击Save按钮保存配置。Nginx Proxy Manager会自动生成并应用Nginx 配置文件。
此时,浏览器访问二级域名http://<your-server-domain>即可访问到Nginx Proxy Manager的管理界面

一键申请SSL证书
申请SSL证书,让网站支持https访问。
选择创建一个新的证书,勾选强制SSL,填写邮件、同意条款,点击Save即可申请SSL证书

此时,浏览器就可以使用https访问,并提示连接安全

申请泛域名SSL证书
泛域名SSL证书就是指:申请一个二级域名*.xxx.com证书,这样二级域名无论是什么都可以用这个证书,不再需要为每一个二级域名申请一个SSL证书。
获取API令牌
这里使用Cloudflare托管域名,故登录Cloudflare,获取域名服务商的API令牌
API令牌:在Cloudflare仪表板中,点击右上角的头像,然后选择我的个人资料,在左侧菜单中,选择API 令牌 创建新的API令牌:点击创建令牌按钮 选择API令牌模板:Cloudflare提供了一些预定义的模板,可以选择其中之一,也可以自定义令牌。 根据API令牌用途选择不同模板:对于Nginx Proxy Manager,通常选择编辑区域DNS模板是一个不错的选择。
使用模板后,只需要修改区域资源项,选择要操作的域名即可

得到如下提示,获得API令牌

添加泛域名证书
选择SSL Certificates -> Add SSL Certificate -> Let's Encrypt选项

填写域名: *.域名或域名 *.域名、邮箱
勾选:Use a DNS Challenge、选择DNS提供商:Cloudflare,根据模板提示填入服务商处获取的API令牌
勾选同意条款,然后保存即可
新建代理
进入Proxy Hosts,新建一个反向代理:指定一个二级域名,同时指定某个程序服务端口

证书配置这里指定泛域名证书

验证
浏览器以https方式访问指定的二级域名,不出意外即可访问对应的服务

Nginx Proxy Manager(NPM)部署与配置指南
序言:Nginx Proxy Manager(NPM)概述
Nginx Proxy Manager(NPM)是一款基于Nginx的反向代理管理工具,其设计旨在以高度可视化的方式简化Nginx的配置与维护流程。通过其优雅的Web界面,用户可轻松实现反向代理设置、SSL证书自动化管理、访问权限控制等核心功能,尤其适用于需要快速部署多域名服务或SSL加密的场景。
官方资源:
部署流程:从环境搭建到服务启航
1. 环境准备:Docker与Docker Compose安装
若系统尚未安装Docker及Docker Compose,请根据操作系统类型参考官方指南完成部署:
- Docker安装:Docker官方文档
- Docker Compose配置:Docker Compose安装指南
- 便捷脚本:可通过此脚本快速完成Linux环境下的Docker安装。
2. 项目目录创建与配置
为确保文件与数据的有序管理,请执行以下操作:
mkdir nginx-proxy-manager
cd nginx-proxy-manager
3. Docker Compose配置文件构建
在项目目录中创建docker-compose.yml文件,基础配置如下:
version: '3.8'
services:
app:
image: 'jc21/nginx-proxy-manager:latest'
restart: unless-stopped
ports:
- '80:80' # HTTP流量映射
- '81:81' # 管理后台访问端口
- '443:443' # HTTPS流量映射
volumes:
- ./data:/data # 配置与证书数据持久化
- ./letsencrypt:/etc/letsencrypt # Let's Encrypt证书存储
进阶配置(MySQL后端支持):
若需使用MySQL作为数据库后端(推荐高可用场景),可采用以下配置:
version: '3.8'
services:
app:
...
environment:
DB_MYSQL_HOST: "db"
DB_MYSQL_PORT: 3306
DB_MYSQL_USER: "npm"
DB_MYSQL_PASSWORD: "npm"
DB_MYSQL_NAME: "npm"
depends_on:
- db
db:
image: 'jc21/mariadb-aria:latest'
environment:
MYSQL_ROOT_PASSWORD: 'npm'
MYSQL_DATABASE: 'npm'
MYSQL_USER: 'npm'
MYSQL_PASSWORD: ' \n MARIADB_AUTO_UPGRADE: '1'
volumes:
- ./mysql:/var/lib/mysql
4. 服务启动与验证
执行以下命令启动容器:
docker-compose up -d # 或使用docker compose up -d(若已安装Docker Compose插件)
数据存储说明:
- SQLite模式:默认使用轻量级SQLite数据库,适合轻量级应用场景。
- MySQL模式:提供更强的数据持久化与扩展性,推荐用于生产环境。
Web管理界面:掌控全局的可视化入口
访问入口
服务启动后,通过浏览器访问:http://<服务器IP>:81,即可进入管理界面。
首次登录与安全配置
- 默认凭据:
- 邮箱:
[email protected] - 密码:
changeme
- 邮箱:
- 安全建议:登录后立即修改默认密码,启用双因素认证(如需)。
核心功能实践:代理主机与SSL配置
1. 域名解析配置
在域名注册商平台完成域名与服务器IP的绑定:
- 示例:添加DNS记录(类型:A记录,名称:
npm,值:服务器公网IP)。 - 验证:确保域名可正确解析至服务器IP。
2. 反向代理主机创建
步骤路径:导航至
Proxy Hosts > Add Proxy Host。关键配置项说明:
- Domain Names:需绑定的域名(如
npm.example.com)。 - Forward Host/IP:目标服务地址(如Docker容器IP
172.17.0.1或外部IP)。 - Forward Port:目标服务端口(如
81)。 - SSL/TLS:选择
Let's Encrypt自动签发证书,或自定义SSL配置。
- Domain Names:需绑定的域名(如
进阶选项:
- 缓存策略:启用静态资源缓存以提升响应速度。
- 安全防护:启用
Block Common Exploits抵御常见攻击。
3. 目标服务IP查询
若需获取容器内网IP,可通过命令:
ip addr show docker0 # 查看Docker默认网桥IP(如172.17.0.1)
SSL证书管理:Let’s Encrypt自动化集成
NPM无缝支持Let’s Encrypt证书的自动签发与更新:
- 在添加代理主机时,选择
Let's Encrypt作为SSL模式。 - 确保域名解析已生效,且服务器80/443端口可访问。
- NPM将自动完成证书签发与续期,无需手动干预。
总结:NPM的价值与扩展性
Nginx Proxy Manager以极简的设计,将复杂的服务代理与SSL管理转化为可视化操作,极大降低了运维门槛。无论是个人开发者还是企业级用户,均可通过其灵活的配置策略实现:
- 多域名统一管理:通过单一界面管理数百个代理主机。
- 无缝SSL加密:Let’s Encrypt集成确保所有流量安全传输。
- 弹性扩展:支持MySQL后端与容器化部署,适应高并发场景。
提示:建议定期备份./data与./letsencrypt目录,以确保配置与证书的持久性。
通过本指南,您已掌握NPM从部署到进阶配置的全流程,接下来可根据实际需求探索更多高级功能,如Websocket支持、访问白名单设置等。祝您在代理管理的旅程中一切顺利!
文章作者:大神K
版权说明:本文为原创内容,转载请注明出处。