📀安装Nginx-Proxy-Manager

使用Nginx-Proxy-Manager管理域名反代和重定向

Nginx-Proxy-Manager官网:https://nginxproxymanager.com/

项目Github地址:https://github.com/NginxProxyManager/nginx-proxy-manager

使用docker-compose安装:

services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    restart: always
    ports:
      - '80:80'
      - '81:81'
      - '443:443'
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt

以上是最小化安装脚本,使其能跑起来的最低要求,用的是Docker的Volume数据库,在重构时很可能导致数据丢失,官方建议使用MySQL / MariaDB数据库,将Docker-Compose改成如下:

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

但是我有一次在构建MySQL / MariaDB数据库时由于之前跑过别的项目导致了数据库冲突,折腾了半天没搞好,最终我是选择了最小化安装解决。

安装完成后管理地址为ip:81 默认账号[email protected]默认密码changeme

关于反代的ip:需要看NPM的docker容器的network getaway,而不是127.0.0.1!

在使用前建议先手动导入根域名SSL证书(推荐使用OHTTPS,申请方便,而且自动续期)到SSL证书的添加Custom证书页面,就可以给改根域下添加的所有二级域名开启HTTPS了,我们一般都是只需要用某个域名指向服务器的某个端口,那么直接在主面版配置就行,如果需要用域名指向某个端口的path地址(比如下面讲道德Nginx中,以及后面的Pandora api余额查询中就可能会用到),那么需要在高级选项面板配置local路径(注意只填下面的local语句块,不是完整的配置文件),下面是一个示例,末尾添加了path路径,注意结尾的斜杠/一定不能少!:

    location / {
        proxy_pass http://172.29.0.1:8083/api/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

最后更新于