一、Nginx-Proxy-Manager简介

Nginx-Proxy-Manager 是一个基于 Web 的 Nginx 服务器管理工具,它允许用户通过浏览器界面轻松地管理和监控 Nginx 服务器。通过 Nginx-Proxy-Manager,可以获得受信任的 SSL 证书,并通过单独的配置、自定义和入侵保护来管理多个代理。用户还可以查看服务器的状态、配置、日志以及流量等信息,还可以对服务器进行一键重启、停止等操作。

二、功能

实时监控:Nginx-Proxy-Manager 可以实时监控服务器的状态和性能,包括 CPU 使用率、内存使用情况、网络流量等。

配置文件管理:用户可以在 Nginx-Proxy-Manager 中编辑 Nginx 的配置文件,支持语法高亮和自动补全功能。

可视化界面:Nginx-Proxy-Manager 提供了一个直观的 Web 界面,用户可以通过浏览器轻松地查看和管理 Nginx 服务器。

一键重启/停止:用户可以在 Nginx-Proxy-Manager 中一键重启或停止 Nginx 服务器,无需手动操作命令行。

日志管理:Nginx-Proxy-Manager 可以查看和分析 Nginx 的访问日志、错误日志等,帮助用户诊断问题。

三、安装

3.1 系统要求

Ubuntu/Debian: 16.04+

CentOS/RHEL: 7.0+

Debian/Ubuntu: Python 3.6+, Django 2.0+, Nginx 1.10+, PostgreSQL 9.6+

 

3.2 bash安装步骤

3.2.1 安装依赖:

sudo apt-get update
sudo apt-get install -y python3 python3-pip postgresql libpq-dev g++ make build-essential libpcre3 libpcre3-dev zlib1g-dev openssl libssl-dev wget curl unzip

3.2.2 克隆项目:

git clone https://github.com/francescoferrari/nginx_proxy_manager.git
cd nginx_proxy_manager

3.2.3 初始化数据库:

python manage.py db init
python manage.py db migrate
python manage.py db upgrade

3.2.4 创建超级用户:

python manage.py createsuperuser --username=admin --email=admin@example.com --password=mysecretpassword

3.2.5 安装并配置 Django:

python manage.py collectstatic --noinput --settings=settings_local
python manage.py runserver 0.0.0.0:81 &> /dev/null & # 在后台运行 Django,便于调试时访问管理界面

3.2.6 配置 Nginx:

编辑 /etc/nginx/sites-available/default,将 proxy_set_header X-Forwarded-Host $host; 这一行注释掉,然后重启 Nginx:

sudo service nginx restart # 或者使用 systemctl restart nginx

 

3.3 Docker安装步骤

在安装nginx-proxy-manager前需要提前安装好docker和docker-compose并保证80 81 443端口未被占用

docker 安装文档 https://docs.docker.com/install/
docker-compose 安装文档 https://docs.docker.com/compose/install/

3.3.1 在服务器中创nginx-proxy-manager目录

mkdir nginx-proxy-manager

3.3.2 进入到nginx-proxy-manager目录中

cd nginx-proxy-manager

3.3.3 在nginx-proxy-manager目录中创建docker-compose.yaml文件

nano docker-compose.yaml

nginx-proxy-manager/docker-compose.yaml内容为:

version: "3"
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:
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'
volumes:
- ./data/mysql:/var/lib/mysql

3.3.4 启动nginx-proxy-manager

docker-compose up -d

3.4 默认用户名和密码

Email: admin@example.com
Password: changeme

四、使用

4.1 访问管理界面

在浏览器中输入 https://your_server_ip:81,使用创建的超级用户账号或默认账号登录

4.2 添加代理主机

4.3 申请证书

注意:这样申请证书比较麻烦,需要一个一个的去申请,那么可以通过申请通配符证书(泛域名证书)来解决这个问题

4.4 申请通配符证书

4.5 自定义页面

NPM还支持自定义服务器的默认Web页面。点击“设置”->“默认站点”并选择“编辑”。您可以选择“404 Page”、“重定向”或“自定义页面”