特征

  • 美观和安全的管理界面基于 Tabler
  • 轻松创建转发域,重定向,Steams 和 404 主机,而无需对 Nginx 一无所知
  • 使用 Let’s Encrypt 免费 SSL 或提供您自己的自定义 SSL 证书
  • 主机的访问列表和基本 HTTP 身份验证
  • 高级 Nginx 配置可供超级用户使用
  • 用户管理、权限和审核日志

Nginx Proxy Manager

Nginx proxy manager 是一个很简单的反向代理工具。
官网:https://nginxproxymanager.com/
门槛极低,操作简单,不需要你掌握很复杂的 Nginx 配置知识,只需要几步就能很轻松完成反向代理的设置和 SSL 证书的部署。

背景

在一个主机下创建了多个docker,域名只能访问80端口,要想访问其他的docker只能在域名后面加端口号,通过Nginx Proxy Manager反向代理的方法,一个域名一个公网IP一个端口对应一个二级域名即可巧妙去掉端口

准备工作

  1. 一个域名(可以在 freenom 申请一个免费的域名)
  2. 一个 cloudflare 账号
  3. 一台具有公网ip的主机

将域名解析到自己的公网IP

步骤概要:

  1. 注册一个Cloudflare账号;
  2. 添加你的网站到Cloudflare中,获取Cloudflare的域名解析服务器(NS);
  3. 前往你的域名注册网站,修改域名解析服务器(NS)为Cloudflare的,Cloudflare会自动获取已有的解析记录,但有时候也会获取不全,你需要人工检查一下。
  4. 按需在Cloudflare中添加网站解析记录,常用的解析记录是A记录,用于将域名指向网站的服务器IP

Docker安装nginx proxy manager

项目地址:https://github.com/NginxProxyManager/nginx-proxy-manager?utm_source=nginx-proxy-manager

安装docker-compose

1
2
3
4
5
6
7
8
9
10
11
#国外鸡
sudo curl -L https://github.com/docker/compose/releases/download/1.16.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

#国内鸡
sudo curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

#添加可执行权限
sudo chmod +x /usr/local/bin/docker-compose

#测试安装结果
docker-compose --version

创建安装目录

1
2
3
4
5
sudo -i

mkdir -p /root/data/docker_data/npm

cd /root/data/docker_data/npm

创建docker-compose.yml的文件

1
nano docker-compose.yml

复制下列代码黏贴到文件里

1
2
3
4
5
6
7
8
9
10
11
12
version: '3'
services:
app:
image: 'jc21/nginx-proxy-manager:latest'
restart: unless-stopped
ports:
- '80:80' # 冒号左边可以改成自己服务器未被占用的端口
- '81:81' # 冒号左边可以改成自己服务器未被占用的端口
- '443:443' # 冒号左边可以改成自己服务器未被占用的端口
volumes:
- ./data:/data # 冒号左边可以改路径,现在是表示把数据存放在在当前文件夹下的 data 文件夹中
- ./letsencrypt:/etc/letsencrypt # 冒号左边可以改路径,现在是表示把数据存放在在当前文件夹下的 letsencrypt 文件夹中

ctrl+x 然后Y然后回车退出编辑模式,并启动Docker

1
docker-compose up -d

运行 Nginx Proxy Manager

1
2
3
4
#面板的登录地址为:ip+81端口
#初始账号密码
Email: admin@example.com
Password: changeme

更新 Nginx Proxy Manager

1
2
3
4
5
6
7
8
9
10
11
cd /root/data/docker_data/npm

docker-compose down

cp -r /root/data/docker_data/npm /root/data/docker_data/npm.archive # 万事先备份,以防万一

docker-compose pull

docker-compose up -d # 请不要使用 docker-compose stop 来停止容器,因为这么做需要额外的时间等待容器停止;docker-compose up -d 直接升级容器时会自动停止并立刻重建新的容器,完全没有必要浪费那些时间。

docker image prune # prune 命令用来删除不再使用的 docker 对象。删除所有未被 tag 标记和未被容器使用的镜像

提示

1
2
WARNING! This will remove all dangling images.
Are you sure you want to continue? [y/N]

输入Y

卸载 Nginx Proxy Manager

1
2
3
4
5
cd /root/data/docker_data/npm

docker-compose down

rm -rf /root/data/docker_data/npm # 完全删除映射到本地的数据