反向代理神器Nginx Proxy Manager
反向代理Nginx Proxy Manager
代理
代理就是第三方
正向代理
正向代理是一个位于客户端和目标服务器之间的服务器(代理服务器),为了从目标服务器取得内容,客户端向代理服务器发送一个请求并指定目标,然后代理服务器向目标服务器转交请求并将获得的内容返回给客户端。正向代理的特点是,可以保护访问者的信息。
用途:
- 突破访问限制,通过第三方代理,访问国外网站
- 提高访问速度
- 隐藏客户端真实IP
反向代理
反向代理指以代理服务器接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。
反向代理的特点是,可以保护被访问服务器的信息。
用途:
- 隐藏服务器真实IP
- 负载均衡,根据所有真实服务器的负载情况,将客户端请求分发到不同的真实服务器上
- 提高访问速度,对于静态内容及短时间内有大量访问请求的动态内容提供缓存服务
- 提供安全保障,反向代理服务器可以作为应用层防火墙,为网站提供对基于Web的攻击行为的防护,统一提供加密和SSL加速和HTTP访问认证等
Nginx Proxy Manager
Nginx proxy manager是一个简单的反向代理工具。
该项目作为一个预构建的 docker 镜像提供,使您能够轻松地转发到在家里或其他地方运行的网站,包括免费的 SSL,而无需对 Nginx 或 Letsencrypt 有太多了解。
用途:
- 轻松的反向代理设置
- 轻松配置HTTPS
- 提供简单的访问权限设置
安装
- 创建安装目录
mkdir -p /root/data/docker_data/npm
cd /root/data/docker_data/npm
- 新建docker-compse.yml
version: '3'
services:
app:
image: 'jc21/nginx-proxy-manager:latest' # 如果拉取不到可以去docker hub找到具体的tag进行拉取
restart: unless-stopped
ports:
- '80:80' # 冒号左边可以改成自己服务器未被占用的端口
- '81:81' # 冒号左边可以改成自己服务器未被占用的端口
- '443:443' # 冒号左边可以改成自己服务器未被占用的端口
volumes:
- ./data:/data # 冒号左边可以改路径,现在是表示把数据存放在在当前文件夹下的 data 文件夹中
- ./letsencrypt:/etc/letsencrypt # 冒号左边可以改路径,现在是表示把数据存放在在当前文件夹下的 letsencrypt 文件夹中
- 运行
cd /root/data/docker_data/npm
docker-compose up -d
- 访问:http://ip:81
# 默认账号
Email: admin@example.com
Password: changeme
- 更新
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 标记和未被容器使用的镜像
- 卸载
cd /root/data/docker_data/npm
docker-compose down
rm -rf /root/data/docker_data/npm # 完全删除映射到本地的数据
SSL证书
通过DNS验证的方式,自动申请SSL证书,使得域名能够通过HTTPS访问
- 修改域名DNS服务器
这次选择的DNS服务器为腾讯云的DNSPOD服务器,在[我的域名]中添加自己的域名
会提示在原域名提供商修改DNS服务器为DNSPOD服务器的方法,打开域名提供商的域名管理面板,在[自定义DNS]中填写DNSPOD服务器的两个DNS IP,等待几分钟后才会生效
于是,腾讯云便托管了此域名的DNS映射,后期修改二级域名就可以在此处修改
- 获取DNSPod Token
控制面板中创建密钥,复制ID和Token
- NPM添加SSL证书
回到NPM,找到SSL认证
Domain Names中填写*.techblog.fun
,打开Use a DNS Challenge
选项,并选择个人域名的DNS解析服务商(DNSPod),最后填入服务商提供的api key或者token。
- 设置HTTPS
进入反向代理设置界面,编辑创建的反代服务,选择SSL选项,下拉菜单中选择我们申请的证书,然后可以勾选Force SSL
即强制HTTPS。
实战
- 域名解析
首先需要拥有一个域名,在域名控制面板中,添加1条记录类型为CNAME的记录,比如主机名称填写essay,记录值填写记录类型为A的全限定域名www.techblog.com
,则essay.techblog.com
即可跳转到www.techblog.com
- 添加代理
在NPM的管理界面中进入Proxy Hosts,点击右边Add Proxy Host
,在弹出的界面Details
选项中填写相应的字段。
Domain Names: 填写要反向代理的域名,这里就是
essay.techblog.com
Forward Hostname / IP: 需要访问的服务所在服务器IP地址
Forward Port: 该服务的端口
访问www.techblog.com
其实就是访问NPM(NPM的端口是80,http访问中不写端口就是代表访问80端口)
所以访问路径其实就是: essay.techblog.com
-->www.techblog.com
-->NPM反向代理-->服务所在服务器ip:port
参考
[ 1 ] https://cloud.tencent.com/developer/article/1418457
[ 2 ] https://blog.laoda.de/archives/nginxproxymanager
[ 3 ] https://zhuanlan.zhihu.com/p/536791628
[ 4 ] 中文版: https://github.com/xiaoxinpro/nginx-proxy-manager-zh
文章标题:反向代理神器Nginx Proxy Manager
文章链接:http://120.46.217.131:82/archives/55/
最后编辑:2023 年 3 月 4 日 18:05 By Yang
许可协议: 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)