2023-12-15
学习资料
00

目录

介绍
安装docker
安装nginx proxy manager
登陆面板
使用中的一些常见问题
反代127.0.0.1无法正常回源
如何在nginx proxy manager中配置gRPC反代?
要如何恢复nginx proxy manager的登陆密码
目前nginx proxy manager使用sqlite做为数据库【2021年11月份之后的版本】
使用MYSQL数据库的版本恢复密码

介绍

nginx proxy manager是一个简单好用的nginx反向代理配置工具,基于docker运行的。这使得它的部署和运行的非常方便。

图片.png

安装docker

这里使用官方提供的一键脚本来进行安装,脚本同时会安装docker compose

bash
curl -fsSL https://get.docker.com | bash -s docker

安装nginx proxy manager

将下面的文件保存为docker-compose.yml文件,然后在目录中运行docker compose up -d即可拉取镜像并启动容器。 这里提供两个编排文件供大家选择,分别为官方原版和大神汉化的版本,个人推荐汉化版本。

yml
version: '3.8' services: app: image: 'jc21/nginx-proxy-manager:latest' restart: unless-stopped ports: - '80:80' - '81:81' - '443:443' volumes: - ./data:/data - ./letsencrypt:/etc/letsencrypt
yml
version: '3' services: app: image: 'chishin/nginx-proxy-manager-zh:release' restart: always ports: - '80:80' - '81:81' - '443:443' volumes: - ./data:/data - ./letsencrypt:/etc/letsencrypt

登陆面板

默认监听端口为81,登陆地址http://yourip:81

默认用户名:[email protected]

默认密码:changeme

使用中的一些常见问题

反代127.0.0.1无法正常回源

因为nginx proxy manage是运行在docker中的,docker通过一个虚拟的交换机跟主机连接,127.0.0.1对于一个docker容器来说,相当于其内部地址,是无法被外部访问的。需要反代本地的端口,要在代理配置中填入docker host的IP。一般默认为172.17.0.1 也可以使用ip a命令查看docker0网卡所在的IP

图片.png

如何在nginx proxy manager中配置gRPC反代?

我们知道nginx中是支持gRPC反代的,下面是一个配置的示例,在高级标签,自定义配置中填入下面代码,并将gRPC的服务器地址和端口修改为自己的。

underscores_in_headers on; location / { grpc_read_timeout 300s; grpc_send_timeout 300s; grpc_socket_keepalive on; if ($http_content_type = "application/grpc") { grpc_pass grpc://172.18.0.1:7891; } proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $http_connection; proxy_http_version 1.1; # Proxy! include conf.d/include/proxy.conf; }

要如何恢复nginx proxy manager的登陆密码

目前nginx proxy manager使用sqlite做为数据库【2021年11月份之后的版本】

  1. 运行docker ps查看nginx proxy manager容器的ID号<CONTAINER ID>
  2. 进入容器并进入数据库
js
docker exec -it <CONTAINER ID> sh apt update && apt install sqlite3 -y sqlite3 /data/database.sqlite
  1. 在sqlite提示符下,将所有用户设置为已删除
UPDATE user SET is_deleted=1; .exit exit
  1. 如果容器已经在运行,重启它。
docker restart <CONTAINER ID>
  1. 容器重启成功之后,即可使用默认的用户名和密码登陆

    默认用户名:[email protected]

    默认密码:changeme

  2. 登陆后,按提示新建一个管理员用户名和密码。

  3. 需要恢复原来的管理员和配置,执行下面的操作

docker exec -it <CONTAINER ID> sh sqlite3 /data/database.sqlite UPDATE user SET is_deleted=0; .exit exit docker restart <CONTAINER ID>
  1. 容器重启后,在用户管理中能看到以前的管理员,对其进行密码重置操作后,即可重新登陆。

使用MYSQL数据库的版本恢复密码

  1. 首先使用Docker ps命令,查找对应的容器ID
docker exec -it <CONTAINER ID> sh mysql -u root -p
  1. 查看docker-compose.yml文件,获取mysql root的密码

  2. 继续执行下面的命令

USE npm; UPDATE user SET is_deleted=1; quit exit
  1. 重启容器并使用默认用户名和密码登陆
  2. 恢复原来的管理员
docker exec -it <CONTAINER ID> sh mysql -u root -p USE npm; UPDATE user SET is_deleted=0; quit exit