Nginx Proxy Manager (NPM) 是一款功能强大的开源软件,它提供了一个用户友好的界面,让用户可以轻松地管理 Nginx 反向代理配置。通过 NPM,你可以快速搭建高性能、安全的反向代理服务器,实现负载均衡、SSL 证书自动申请、自定义配置,配置 Web 应用防火墙,防止常见的 Web 攻击等功能。
一、安装
首先,确保已经安装了 Docker 和 Docker Compose,然后通过以下步骤来启动 nginx-proxy-manager
服务。
1、创建文件
# 创建所需的文件夹
mkdir -p /home/docker/npm
# 进入安装目录
cd /home/docker/npm
# 创建 docker-compose.yml 文件
vim docker-compose.yml
在文件中,添加以下配置:
# 默认登陆名和密码
# Email: admin@example.com
# Password: changeme
services:
app:
image: 'docker.io/jc21/nginx-proxy-manager:latest'
restart: unless-stopped
ports:
- '80:80'
- '81:81'
- '443:443'
volumes:
- /home/docker/npm/data:/data
- /home/docker/npm/letsencrypt:/etc/letsencrypt
配置完成后,保存并退出编辑器(按下 i
进入编辑模式,按下 Esc
退出编辑模式,输入 :wq
保存并退出)。
2、启动服务
你可以通过以下命令启动服务:
docker-compose up -d
这样,nginx-proxy-manager
就会在后台启动,默认通过 admin@example.com
和 changeme
作为登录凭证。
3、中文镜像
- 英文镜像:
jc21/nginx-proxy-manager
- 中文镜像:
chishin/nginx-proxy-manager-zh
你可以根据需求切换镜像,中文镜像为中文界面,适合中文用户。
二、配置
Nginx Proxy Manager 允许你通过挂载自定义配置文件来定制 Nginx 配置。以下是一些常见的自定义配置文件路径和使用方法:
1、配置路径
在 Nginx Proxy Manager 中,你可以在 /data/nginx/custom
文件夹中添加自定义配置文件,按需引入到主配置文件中:
/data/nginx/custom/root_top.conf # 包含在 nginx.conf 的顶部
/data/nginx/custom/root.conf # 包含在 nginx.conf 的最末尾
/data/nginx/custom/http_top.conf # 包含在 http 块的顶部
/data/nginx/custom/http.conf # 包含在 http 块的末尾
/data/nginx/custom/events.conf # 包含在 events 块的末尾
/data/nginx/custom/stream.conf # 包含在 stream 块的末尾
/data/nginx/custom/server_proxy.conf # 包含在代理服务器块的末尾
/data/nginx/custom/server_redirect.conf # 包含在重定向服务器块的末尾
/data/nginx/custom/server_stream.conf # 包含在流服务器块的末尾
/data/nginx/custom/server_stream_tcp.conf # 包含在 TCP 流服务器块的末尾
/data/nginx/custom/server_stream_udp.conf # 包含在 UDP 流服务器块的末尾
-
配置文件示例
Nginx 主配置文件
==========================
1. 全局配置:root_top.conf
==========================
包含全局的基础配置(如模块加载、日志路径等)
include /data/nginx/custom/root_top.conf;
==========================
2. 事件配置:events.conf
==========================
events {
include /data/nginx/custom/events.conf;
}==========================
3. 主 HTTP 配置块:http_top.conf 和 http.conf
==========================
http {
include /data/nginx/custom/http_top.c