反向代理神器Nginx Proxy Manager

  7 分钟   7466 字    |    

反向代理Nginx Proxy Manager

代理

代理就是第三方

正向代理

image-20230304130017056

正向代理是一个位于客户端和目标服务器之间的服务器(代理服务器),为了从目标服务器取得内容,客户端向代理服务器发送一个请求并指定目标,然后代理服务器向目标服务器转交请求并将获得的内容返回给客户端。正向代理的特点是,可以保护访问者的信息。

用途:

  1. 突破访问限制,通过第三方代理,访问国外网站
  2. 提高访问速度
  3. 隐藏客户端真实IP

反向代理

image-20230304130105840反向代理指以代理服务器接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。

反向代理的特点是,可以保护被访问服务器的信息。

用途:

  1. 隐藏服务器真实IP
  2. 负载均衡,根据所有真实服务器的负载情况,将客户端请求分发到不同的真实服务器上
  3. 提高访问速度,对于静态内容及短时间内有大量访问请求的动态内容提供缓存服务
  4. 提供安全保障,反向代理服务器可以作为应用层防火墙,为网站提供对基于Web的攻击行为的防护,统一提供加密和SSL加速和HTTP访问认证等

Nginx Proxy Manager

Nginx proxy manager是一个简单的反向代理工具。

该项目作为一个预构建的 docker 镜像提供,使您能够轻松地转发到在家里或其他地方运行的网站,包括免费的 SSL,而无需对 Nginx 或 Letsencrypt 有太多了解。

用途:

  • 轻松的反向代理设置
  • 轻松配置HTTPS
  • 提供简单的访问权限设置

安装

  1. 创建安装目录
mkdir -p /root/data/docker_data/npm
cd /root/data/docker_data/npm
  1. 新建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 文件夹中
  1. 运行
cd /root/data/docker_data/npm
docker-compose up -d 
  1. 访问:http://ip:81
# 默认账号
Email:    admin@example.com
Password: changeme

image-20230304131544400

  1. 更新
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. 卸载
cd /root/data/docker_data/npm
docker-compose down 
rm -rf /root/data/docker_data/npm  # 完全删除映射到本地的数据

SSL证书

通过DNS验证的方式,自动申请SSL证书,使得域名能够通过HTTPS访问

  1. 修改域名DNS服务器

这次选择的DNS服务器为腾讯云的DNSPOD服务器,在[我的域名]中添加自己的域名

image-20230304174105014

会提示在原域名提供商修改DNS服务器为DNSPOD服务器的方法,打开域名提供商的域名管理面板,在[自定义DNS]中填写DNSPOD服务器的两个DNS IP,等待几分钟后才会生效

image-20230304174437962

于是,腾讯云便托管了此域名的DNS映射,后期修改二级域名就可以在此处修改

image-20230304174639852

  1. 获取DNSPod Token

控制面板中创建密钥,复制ID和Token

image-20230304175121357

image-20230304175241695

  1. NPM添加SSL证书

回到NPM,找到SSL认证

image-20230304174937458

Domain Names中填写*.techblog.fun ,打开Use a DNS Challenge 选项,并选择个人域名的DNS解析服务商(DNSPod),最后填入服务商提供的api key或者token。

image-20230304175417460

  1. 设置HTTPS

进入反向代理设置界面,编辑创建的反代服务,选择SSL选项,下拉菜单中选择我们申请的证书,然后可以勾选Force SSL即强制HTTPS。

image-20230304175922055

实战

  1. 域名解析

首先需要拥有一个域名,在域名控制面板中,添加1条记录类型为CNAME的记录,比如主机名称填写essay,记录值填写记录类型为A的全限定域名www.techblog.com,则essay.techblog.com即可跳转到www.techblog.com

  1. 添加代理

在NPM的管理界面中进入Proxy Hosts,点击右边Add Proxy Host ,在弹出的界面Details选项中填写相应的字段。

Domain Names: 填写要反向代理的域名,这里就是essay.techblog.com
Forward Hostname / IP: 需要访问的服务所在服务器IP地址
Forward Port: 该服务的端口

image-20230304132626933

访问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

~  ~  The   End  ~  ~


 赏 
感谢您的支持,我会继续努力哒!
支付宝收款码
tips
文章二维码 分类标签:教程nginxdocker
文章标题:反向代理神器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)
(*) 5 + 6 =
快来做第一个评论的人吧~