Docker系列 好用的反向代理神器nginx proxy manager
本文最后更新于 2024年7月04日, 如有失效请评论区留言。

前言

每次使用nginx做反向代理都需要进入服务器, 使用命令行操作配置文件, 非常麻烦,且时间一久很容易忘记.

Nginx Proxy Manager(后面简称npm)为用户提供一个易于使用的web界面,用于管理虚拟主机、反向代理、SSL证书和访问控制等功能.

查看官方文档

Image [9]

也有第三方基于npm制作了中文版查看DockerHub 查看GitHub

在下面的docker-compose.yml文件中将 'jc21/nginx-proxy-manager:latest' 改为 chishin/nginx-proxy-manager-zh:release 即可

本教程使用 docker-compose 安装,如果没有安装 dockerdocker-compose 请查看 Docker 系列 基础系列 docker 及 docker-compose 安装

一、安装

npm 需要使用到mysql, 再加上redis 三者皆是常见项目需要用到的服务, 故放在一个docker-composer文件里创建, 统一部署, 方便之后复用

没有redis需求的, 可以在docker-compose.yml的代码中删除redis及其之后的代码

1. 安装位置

个人习惯所有docker项目文件, 都在/root/docker目录下, 以项目命名文件夹.方便管理统一管理

例如:

0e170a2a8a2a5a36965913d17943c491.png

2. 安装

npm目录下创建docker-composer.yml文件

mkdir -p /root/docker/npm
cd /root/docker/npm
vi docker-compose.yml

输入:

version: '3'
services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    container_name: npm
    restart: unless-stopped
    ports:
      - '80:80' # Public HTTP Port
      - '443:443' # Public HTTPS Port
      - '81:81' # Admin Web npm 后台的端口
    environment:
      DB_MYSQL_HOST: "db"   # 数据库容器名
      DB_MYSQL_PORT: 3306  # 数据库容器端口
      DB_MYSQL_USER: "npm"          #用户名
      DB_MYSQL_PASSWORD: "npm" #密码
      DB_MYSQL_NAME: "npm"        #数据库
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt
    depends_on:
      - db

  db:
    image: mysql:5.7
    container_name: db
    restart: always
    ports:
      - "3306:3306"
    environment:
      MYSQL_ROOT_PASSWORD: root # 管理员密码
      MYSQL_DATABASE: npm   # npm用到的数据库
      MYSQL_USER: npm       # npm用到的用户名
      MYSQL_PASSWORD: npm   # npm用到的密码
    command:
      - --default_authentication_plugin=mysql_native_password
      - --character-set-server=utf8mb4
      - --collation-server=utf8mb4_unicode_ci
    volumes:
      - ../mysql/data:/var/lib/mysql       #mysql数据
      - ../mysql/conf.d:/etc/mysql/conf.d  #mysql配置文件

  redis:
    image: redis:alpine
    container_name: redis
    restart: always
    volumes:
      - ../redis/data:/data

container_name: 容器名, 有大用, 可以在大部分地方使用容器名连接, 而不是难记的 ip地址

保存退出

启动

docker-compose up -d

二、基本使用

  1. 安装好npm后, 登录, 根据提示修改账户密码

  2. 完成域名解析

  3. 回到npm设置代理

    Image [4]

  4. 基本的nginx认证【让网站更安全!开启NginxProxyManager网站访问登陆限制功能】

  5. 反向代理的三种地址设置方式

    1. 推荐 使用容器名+容器端口 (容器名就是上面docker-composer中的container_name 优点无需开放宿主机端口, 无需记录ip)

      Image [6]

    2. 不推荐 使用容器ip+端口 (可能在重启容器后ip改变, 不方便)

      Image [5]

    3. 不推荐 使用宿主机ip+映射的外部端口 (需要服务器开放对应端口, 不安全)

    Image [7]

三、申请泛域名 SSL 证书

视频教程, 申请 Let’s Encrypt 泛域名 SSL 证书, 后面就无需每个二级域名都要申请ssl证书了

根据你们的域名解析商选择合适的申请入口

我这里是用的DNSPOD,点击去申请 APIKEY

记住下图中5和6, 单独备份好

image-20240228153028017

回到Nginx Proxy Manager

image-20240228153303457

image-20240228153725103

图中1, 记得使用通配符*

图中2填写账户邮箱

图中3选择DNSPod

图中4填写DNSPod的邮箱账户

图中5填写上面申请的 DNSPODAPIKEYIDtoken

点击Save如果出现zope报错

image-20240222153145628

可以进入容器内部

docker exec -it <容器名> /bin/bash

安装zope就行

sudo apt install python3-zope

或者

pip install zope

再点击Save重新保存一下即可

  • 如果还不行, 中文版的 GitHub 仓库中也有解决方式, 可以参考

image-20240530150023449

原创声明
本文由 Twist 于2024年2月28日 发表在 柯基屁屁
如未特殊声明,本站所有文章均为原创;你可以在保留作者及原文地址的情况下转
转载请注明:Docker系列 好用的反向代理神器nginx proxy manager | 柯基屁屁
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇