反向代理神器:Nginx Proxy Manager

前言

怎么样才能把 IP + 端口变成域名来访问?
答案是用反向代理。

代理就是第三方,一般分为正向代理和反向代理两种。
正向代理面向客户端,而反向代理面向的是服务器。可以学习下面这个视频:

Nginx Proxy Manager

官网:https://nginxproxymanager.com/
门槛极低,操作简单,不需要你掌握很复杂的 Nginx 配置知识,只需要几步就能很轻松完成反向代理的设置和 SSL 证书的部署。

部署环境

服务器:阿里云服务器
操作系统:Debian 11

开始部署

添加 SWAP 虚拟内存

如果服务器内存比较小,建议配置这一步。否则,可以忽略此步。

设置 SWAP 可以用脚本:

1
wget -O box.sh https://raw.githubusercontent.com/BlueSkyXN/SKY-BOX/main/box.sh && chmod +x box.sh && clear && ./box.sh

选择 18,然后输入你想要扩容的数值即可。输入的数值单位为MB,即输入1024,就是扩容1GB

升级 packages

1
2
3
4
5
sudo -i # 切换到 root 用户

apt update -y # 升级 packages

apt install wget curl sudo vim git -y # Debian 系统比较干净,安装常用的软件

安装 Docker和Docker-compose 环境

参考这篇博客

安装 Nginx Proxy Manager

  • 创建一下安装的目录

    1
    2
    3
    4
    5
    sudo -i

    mkdir -p /root/data/docker_data/npm

    cd /root/data/docker_data/npm
  • 编写yaml文件

    1
    vim docker-compose.yml

    英文输入法下,按 i

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    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 保存退出。

  • 打开服务器防火墙并访问网页(非必需但很重要)

确保自己使用的服务器已经将上面的yaml文件中的端口都开启了,否则后面网页会访问不了。

有的服务器厂商默认关闭不常用的端口,所以需要手动打开。阿里云服务器是在安全组中添加规则开放端口,可以参考这里,最好是参考所使用服务商提供的官方文档。

运行并访问 Nginx Proxy Manager

1
2
3
cd /root/data/docker_data/npm   # 来到 dockercompose 文件所在的文件夹下

docker-compose up -d

开启成功以后,理论上就可以输入 http:// + 服务器ip:81 访问了。

默认登陆名和密码:

1
2
Email:    admin@example.com
Password: changeme
  1. 不知道服务器 IP,可以直接在命令行输入:curl ip.sb,会显示当前服务器的 IP。
  2. 遇到访问不了的情况,请再次检查在宝塔面板的防火墙或服务商的后台防火墙是否打开对应了端口

今后更新 Nginx Proxy Manager

Docker部署的应用更新都很方便

1
2
3
4
5
6
7
8
9
10
11
cd /root/data/docker_data/npm

docker-compose down

cp -r /root/data/docker_data/npm /root/data/docker_data/npm.archive # 万事先备份,以防万一

docker-compose pull

docker-compose up -d # 请不要使用 docker-compose stop 来停止容器,因为这么做需要额外的时间等待容器停止;docker-compose up -d 直接升级容器时会自动停止并立刻重建新的容器,完全没有必要浪费那些时间。

docker image prune # prune 命令用来删除不再使用的 docker 对象。删除所有未被 tag 标记和未被容器使用的镜像

提示:

1
2
WARNING! This will remove all dangling images.
Are you sure you want to continue? [y/N]

输入 y

卸载 Nginx Proxy Manager

1
2
3
4
5
cd /root/data/docker_data/npm

docker-compose down

rm -rf /root/data/docker_data/npm # 完全删除映射到本地的数据

可以卸载得很干净。

最后

本篇博客只是简单搭建一下Nginx Proxy Manager,已经能够使用它来做反向代理了。关于它的具体使用可能后面会更,大家也可以自己研究一下。