介绍

Nginx Proxy Manager (NPM) 是一个基于 Nginx 的图形用户界面(GUI)管理工具,使得配置反向代理、自动化 SSL 证书管理等任务变得更加简单和易用。它旨在让用户不需要具备深厚的技术背景即可轻松地配置和管理 Nginx 反向代理。

主要特点

  1. 简单的图形用户界面:用户可以通过直观的 web 界面管理 Nginx 配置,而无需编辑配置文件。
  2. 自动 SSL 证书管理:集成 Let's Encrypt,可以自动生成和续订 SSL 证书。
  3. 反向代理:轻松地配置和管理多个反向代理条目,包括域名、子域名和路径。
  4. 访问控制:支持基本的访问控制,如用户名和密码保护。
  5. 日志和状态监控:可以通过界面查看代理的日志和运行状态。

简单来说,就是使用 Nginx Proxy Manager 配置反向代理,将 IP+端口 变成 域名 来访问。

开始安装

在开始前,请确保你已经安装了 Docker 环境

1. 创建安装目录

老规矩,先升级 packages

sudo apt-get update

创建安装目录并进入,建议新建一个 data 文件夹来存放

sudo mkdir -p /data/docker_data/npm && cd /data/docker_data/npm

2. 创建 Docker Compose 文件

使用 nano 创建一个 docker-compose.yml 文件

sudo nano docker-compose.yml

添加以下内容:

version: '3.8' #在较新的docker版本中默认将始终使用最新按本的Compose文件模式,因此如果定义版本后,可能会收到警告,但并不会影响使用
services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    restart: unless-stopped
    ports:
      - '80:80'  # 保持默认即可,不建议修改左侧的80
      - '833:81'  # 冒号左边可以改成自己服务器未被占用的端口,例如833
      - '443:443' # 保持默认即可,不建议修改左侧的443
    environment:
      DB_SQLITE_FILE: "/data/database.sqlite" #数据库文件,用于密码找回
    volumes:
      - ./data:/data # 冒号左边可以改路径,现在是表示把数据存放在在当前文件夹下的 data 文件夹中
      - ./letsencrypt:/etc/letsencrypt  # 冒号左边可以改路径,现在是表示把数据存放在在当前文件夹下的 letsencrypt 文件夹中

还记得怎么保存退出吗?Ctrl + OCtrl + X

查看我们自定义的 833端口是否被占用:

lsof -i:833 

什么都没发生?那么恭喜你,可以继续下一步了!

3. 启动 Nginx Proxy Manager

运行以下命令以启动 Nginx Proxy Manager:

sudo docker-compose up -d

还记得我们之前的 UFW 防火墙吗?我们要将端口添加到规则里

sudo ufw allow 833/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

查看一下状态和规则

sudo ufw status

nginx ufw

4. 访问 Nginx Proxy Manager

启动完成后,可以通过浏览器访问 Nginx Proxy Manager 的管理界面。默认情况下,管理界面运行在端口 833

http://your_server_ip:833

nginx2

5. 默认登录

初次登录时使用以下默认凭据:

登录后,请立即更改默认密码以确保安全。

6. 配置和使用

登录到管理界面后,可以开始配置反向代理、SSL 证书和其他设置。以下是一些基本操作:

  1. 添加代理主机

    • 点击 "Proxy Hosts"。
    • 点击 "Add Proxy Host"。
    • 填写域名、IP 地址和端口。
    • 配置 SSL 证书(可以选择自动生成 Let's Encrypt 证书)。
    • 保存设置。
  2. 管理 SSL 证书

    • 点击 "SSL Certificates"。
    • 查看、添加或删除 SSL 证书。
  3. 访问日志和状态

    • 点击 "Logs" 查看访问日志。
    • 点击 "Dashboard" 查看状态和统计信息。

更新 Nginx Proxy Manager

cd /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 image prune  # prune 命令用来删除不再使用的 docker 对象。

卸载 Nginx Proxy Manager

cd /root/data/docker_data/npm

docker-compose down 

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

如果你忘记了密码,可以参考 Nginx Proxy Manager 忘了密码咋办?

参考资料

https://nginxproxymanager.com/setup/