我可以不吃啊 发表于 2024-12-24 20:19:24

轻松上手Nginx Proxy Manager:安装、设置与实战

安装部署

概述

   Nginx Proxy Manager (NPM) 是一个基于 Nginx 的反向代理管理工具,旨在简化 Nginx 的设置和管理。它提供了一个直观的 Web 界面,利用户可以轻松地设置和管理反向代理、SSL 证书、访问控制等功能。
官网:https://nginxproxymanager.com/
GitHub:https://github.com/NginxProxyManager/nginx-proxy-manager
安装Docker和Docker Compose

假如你的系统上还没有安装Docker和Docker Compose,你可以根据你的操作系统参考官方文档进行安装:
Docker安装文档
Docker Compose安装文档
创建项目目次

创建一个目次来存放Docker Compose文件和相关设置文件:
mkdir nginx-proxy-manager

cd nginx-proxy-manager
创建Docker Compose文件

在项目目次中创建一个名为docker-compose.yml的文件,并添加以下内容:
services:
app:
    image: 'jc21/nginx-proxy-manager:latest'
    restart: unless-stopped
    ports:
      - '80:80'
      - '81:81'
      - '443:443'
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt
启动

在项目目次中运行以下下令启动Nginx Proxy Manager,这将下载所需的Docker镜像并启动容器。
docker-compose up -d

# 如果使用docker-compose-plugin
docker compose up -d   
数据存储方式说明

   Nginx Proxy Manager默认利用SQLite数据库来存储其数据,包括设置、代理主机信息、SSL 证书等。除此之外,Nginx Proxy Manager还可以利用MySQL来进行数据存储。
以下是一个docker-compose.yml文件,Nginx Proxy Manager利用MySQL进行数据存储的示例
version: '3.8'
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:
      # Mysql/Maria connection parameters:
      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'
      MARIADB_AUTO_UPGRADE: '1'
    volumes:
      - ./mysql:/var/lib/mysql
Web管理控制台

访问Web界面

   一旦容器启动,你可以通过浏览器访问Nginx Proxy Manager的Web界面。默认所在是http://<your-server-ip>:81。
https://i-blog.csdnimg.cn/direct/4038567e268a42e380c4fd869e5469b0.png
登录

首次登录时,利用以下默认凭据
Email: admin@example.com

Password: changeme
登录后,系统会提示更改默认密码。
https://i-blog.csdnimg.cn/direct/522c023e6b234495858811d17e333b2f.png
根本利用

域名与IP绑定

   在域名管理服务商那里添加域名与IP的绑定关系。
这里添加一条DNS解析,也就是创建一个二级域名:范例:A、名称:npm、IP:服务器IP。
这表示:访问二级域名npm.域名即可访问服务IP。
https://i-blog.csdnimg.cn/direct/ba8f4602b2f2424ca9e774c18e12e5fc.png
添加代理主机

   在Web界面中,可以添加新的代理主机来管理反向代理设置。
点击Proxy Hosts选项卡
https://i-blog.csdnimg.cn/direct/bdc92ac580ca4d2ea9a93c89b34aed0c.png
然后点击Add Proxy Host按钮
https://i-blog.csdnimg.cn/direct/20a8c33068b94408b7451fb0ca31c5ac.png
在添加代理主机的页面中,填写以下信息:
https://i-blog.csdnimg.cn/direct/4921b3a1f48e468db462330104b1610a.png
设置说明

Domain Names :填写网站域名,需要上面做好DNS解析,把域名绑定到服务器IP

Scheme : 选择HTTP或HTTPS。默认http即可,除非有自签名证书

Forward Hostname/IP :填写要代理到的目标主机名或IP地址,或者Docker容器内部IP(NPM和程序服务在同一台服务器上)

Forward Port:填写目标主机的端口号,这里是NPM管理界面81端口

Cache Assets :缓存,根据需求选择打开

Block Common Exploits: 阻止常见的漏洞,根据需求选择打开

Websockets Support :WS支持,根据需求选择打开

Access List: NPM自带的一个限制访问功能
注意:
这里填的是172.17.0.1,为Docker容器内部的IP所在。可以通过下面的下令查询:
# ip addr show docker0
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
    link/ether 02:42:39:63:84:15 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever
保存并应用设置

   填写完全部须要的信息后,点击Save按钮保存设置。Nginx Proxy Manager会主动生成并应用Nginx 设置文件。
此时,浏览器访问二级域名http://<your-server-domain>即可访问到Nginx Proxy Manager的管理界面
https://i-blog.csdnimg.cn/direct/d91ea62665484d6f9ecc6638504bd80b.png
一键申请SSL证书

   申请SSL证书,让网站支持https访问。
选择创建一个新的证书,勾选强制SSL,填写邮件、同意条款,点击Save即可申请SSL证书
https://i-blog.csdnimg.cn/direct/d34d1f34d36a4eee918913b56cbc3423.png
此时,浏览器就可以利用https访问,并提示毗连安全
https://i-blog.csdnimg.cn/direct/04259cc253b240d9a18bf2ee6d6d6e50.png
申请泛域名SSL证书

   泛域名SSL证书就是指:申请一个二级域名*.xxx.com证书,这样二级域名无论是什么都可以用这个证书,不再必要为每一个二级域名申请一个SSL证书。
获取API令牌

这里利用Cloudflare托管域名,故登录Cloudflare,获取域名服务商的API令牌
API令牌:在Cloudflare仪表板中,点击右上角的头像,然后选择我的个人资料,在左侧菜单中,选择API 令牌

创建新的API令牌:点击创建令牌按钮

选择API令牌模板:Cloudflare提供了一些预定义的模板,可以选择其中之一,也可以自定义令牌。

根据API令牌用途选择不同模板:对于Nginx Proxy Manager,通常选择编辑区域DNS模板是一个不错的选择。
利用模板后,只必要修改区域资源项,选择要操作的域名即可
https://i-blog.csdnimg.cn/direct/533224bf8e05425a8822c1dd92f8faf9.png
得到如下提示,获得API令牌
https://i-blog.csdnimg.cn/direct/20ffcb6a8fbc479896c3040233f1adfe.png
添加泛域名证书

选择 SSL Certificates -> Add SSL Certificate -> Let's Encrypt选项
https://i-blog.csdnimg.cn/direct/f6552fb4539e4f86979bce09856a486b.png
填写域名: *.域名或域名 *.域名、邮箱
勾选:Use a DNS Challenge、选择DNS提供商:Cloudflare,根据模板提示填入服务商处获取的API令牌
勾选同意条款,然后保存即可
https://i-blog.csdnimg.cn/direct/9ae7ba37bf5841dca6e07832067dc53b.png
新建代理

进入Proxy Hosts,新建一个反向代理:指定一个二级域名,同时指定某个程序服务端口
https://i-blog.csdnimg.cn/direct/5ff195ada51447b78d4fdf87c5b7debc.png
证书设置这里指定泛域名证书
https://i-blog.csdnimg.cn/direct/fc7e1fae3dfd411381f472b83d93e3a0.png
验证

浏览器以https方式访问指定的二级域名,不出不测即可访问对应的服务
https://i-blog.csdnimg.cn/direct/2b6a480765dd428e96430318f7c0cfd5.png

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 轻松上手Nginx Proxy Manager:安装、设置与实战