安装 Nginx Proxy Manager

安装 Docker-compose

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

创建安装目录

1
2
3
4
5
sudo -i 

mkdir -p /root/data/docker_data/npm

cd /root/data/docker_data/npm

dokcer 安装

1
vim docker-compose.yml 
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' # 冒号左边可以改成自己服务器未被占用的端口
- '81:81' # 冒号左边可以改成自己服务器未被占用的端口
- '443:443' # 冒号左边可以改成自己服务器未被占用的端口
volumes:
- ./data:/data # 冒号左边可以改路径,现在是表示把数据存放在在当前文件夹下的 data 文件夹中
- ./letsencrypt:/etc/letsencrypt # 冒号左边可以改路径,现在是表示把数据存放在在当前文件夹下的 letsencrypt 文件夹中
1
2
nginx -s stop   # 先关掉自带的nginx
docker-compose up -d # 启动

访问 Nginx Proxy Manager

更新 Nginx Proxy Manager

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 标记和未被容器使用的镜像

卸载 Nginx Proxy Manager

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

docker-compose down

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

设置负载均衡

1
2
3
4
5
6
7
cd /root/data/docker_data/npm/data/nginx

mkdir custom

cd custom/

vi http.conf
1
2
3
4
upstream backend {
server backend1.example.com weight=5;
server backend2.example.com backup;
}

然后在WebUI中反代80端口,并在Advanced中加入:

1
2
3
location /  {
proxy_pass http://backend;
}

反代 api.telegram.org

Advanced中加入:

1
2
3
4
5
6
7
8
9
10
11
## 以bot开头的请求都会被正则匹配到
location ~* ^/bot {
proxy_buffering off;
proxy_pass https://api.telegram.org$request_uri;
proxy_http_version 1.1;
}

## 和上面root一样非必要,这个主要是用来确认服务器状态的。也可以改成return 403
location /{
try_files /$uri $uri /index.html;
}