Docker 10 0

    使用docker compose进行Nginx Proxy Manager部署反向代理

    使用docker compose进行Nginx Proxy Manager部署反向代理详细教程

    Nginx Proxy Manager简介

      Nginx Proxy Manager(NPM)是一个基于Nginx的开源工具,用于简化和管理反向代理服务器和虚拟主机的配置。它提供了一个用户友好的图形用户界面(GUI),使用户能够轻松设置和管理代理规则,同时无需深入了解Nginx的配置细节。

    主要特点和功能:

    1. 用户友好的界面:NPM的用户界面非常直观,允许用户轻松创建和管理代理主机和路由规则,而无需手动编辑Nginx配置文件。

    2. SSL证书管理:NPM可以自动为每个代理主机生成和维护SSL/TLS证书,确保你的网站可以通过HTTPS进行加密访问。

    3. 多域名支持:你可以为一个Nginx Proxy Manager实例管理多个域名和虚拟主机,统一集中管理多个网站的反向代理规则。

    4. 身份验证和访问控制:NPM支持访问控制列表(ACL)和基本身份验证,允许你限制对代理的访问。

    5. 日志和监控:NPM提供了详细的请求日志,以帮助你监视流量和检查问题。

    6. 自动HTTP到HTTPS重定向:NPM可以自动将HTTP请求重定向到HTTPS,以增强网站的安全性。

    7. Docker容器化:NPM以Docker容器的形式提供,可以轻松部署到Docker环境中,简化了安装和管理过程。

    8. 多种代理支持:NPM支持代理到各种后端服务,包括Web应用、API、和其他网络服务。

    Nginx Proxy Manager是一个非常有用的工具,特别适合那些需要在Nginx服务器上设置反向代理的用户,而不想深入了解Nginx配置的细节。在本博客文章中,详细介绍如何使用Nginx Proxy Manager来轻松部署反向代理,以及它的一些核心功能和用例。

    安装部署

    安装docker compose

      首先连接服务器,输入下列代码检查是否已安装docker compose。

    docker-compose --version

      如何返回类似Docker Compose version v2.17.3即表示已经安装好docker compose。
      如果没有安装,则输入下列代码安装。

    sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

      这将从 Docker Compose 的官方 GitHub 存储库下载二进制文件并保存在 /usr/local/bin 目录中。

      添加执行权限: 使用以下命令添加执行权限:

    sudo chmod +x /usr/local/bin/docker-compose

      验证安装: 运行以下命令来验证 Docker Compose 安装:

    docker-compose --version

    安装部署NPM

      先检查81端口是否被占用

    lsof -i:81 

      如果什么都没有返回,说明没有占用,如果有返回则说明端口已经被占用。
      如果返回-bash: lsof: command not found那么先安装lsof,再进行检查81端口。

    apt install lsof  #安装 lsof

      首先在/root/docker-data文件夹下面新建npm文件夹,以后docker 文件都放置/docker-data文件夹下,方便统一管理。

    mkdir -p /root/docker-data/npm

      前往npm文件夹

    cd /root/data/docker_data/npm

      新建vim docker-compose.yml文件

    vim docker-compose.yml

      切换到英文输入法按下i,粘贴下面内容端口为81,也可以改成其他端口,但是只能修改81:81左边的81!改为未占用的端口。

    version: '3'  
    services:  
     app:  
     image: 'jc21/nginx-proxy-manager:latest'  
     restart: unless-stopped  
     ports:  
     - '80:80'  # 保持默认即可,不建议修改左侧的80  
     - '81:81'  # 冒号左边可以改成自己服务器未被占用的端口  
     - '443:443' # 保持默认即可,不建议修改左侧的443  
     volumes:  
     - ./data:/data # 冒号左边可以改路径,现在是表示把数据存放在在当前文件夹下的 data 文件夹中  
     - ./letsencrypt:/etc/letsencrypt  # 冒号左边可以改路径,现在是表示把数据存放在在当前文件夹下的 letsencrypt 文件夹中

      按一下 esc,然后输入 :wq 保存退出。

      放行81(或者你自己改的端口)

    ufw allow 81

      如果返回ufw command not found就先安装ufw。

    sudo apt install ufw

      如果购买的网页上也有防火墙,记得也要打开(Azure,AWS,腾讯云,阿里云)。
      现在就可以通过http://ip:81(或者你自己改的端口)进行访问桌面 Nginx Proxy Manager。

      初始邮箱密码如下:

    Email:    [email protected]
    Password: changeme

      进入之后修改自己的邮箱账号、密码和昵称。

    开始进行反向代理

    1. 添加Proxy Host
    2. 填写域名以及服务器和端口,记得打开 Block Common Exploits
    3. 保存
    4. 再点击域名旁边三点,进行编辑,准备申请SSL证书。
    5. 打开Force SSLAgree to the Let's Encrypt Terms of Service保存即可。
    申请完成之后,就可以通过域名进行访问了。

      注意:

    1. 现在CloudFlare域名管理网站对域名进行解析,ping通后再申请
    2. 申请前不要打开CloudFlare小云朵,否则可能会申请失败
    3. 在宝塔等面板使用工具进行网站搭建,可能会申请失败,直接在宝塔面板工具处申请SSL证书即可