1. 前言
怎么样才能把IP+端口
变成域名
来访问?
答案是用反向代理
。
2. 操作环境
服务器:Linux
系统:Debian 10或以上
一个域名
Docker环境(Debian 12 安装 Docker 以及 Docker Compose 教程)
3. 什么是代理(Proxy)
所谓代理
大家都懂其实就是第三方
。
3.1 正向代理(Forward Proxy)
正向代理(Forward Proxy)是一种位于客户端和目标服务器之间的代理服务器,主要用于代表客户端向目标服务器发送请求并获取响应,下面从多个方面详细介绍正向代理:
3.1.1 工作原理
当客户端需要访问目标服务器时,它不会直接向目标服务器发送请求,而是将请求发送给正向代理服务器。正向代理服务器接收到请求后,会以自己的名义向目标服务器转发该请求。目标服务器处理请求并将响应返回给正向代理服务器,正向代理服务器再将响应转发给客户端。
3.1.2 示例说明
3.1.3 主要用途
突破访问限制:在某些情况下,客户端可能由于地理位置、网络限制等原因无法直接访问目标服务器。正向代理服务器可以位于允许访问目标服务器的网络中,客户端通过正向代理服务器间接访问目标服务器,从而突破访问限制。例如,在一些学校或公司网络中,可能会限制对某些网站的访问,用户可以通过配置正向代理服务器来绕过这些限制。
提高访问速度:正向代理服务器可以缓存经常访问的资源。当客户端请求这些资源时,正向代理服务器可以直接从缓存中返回响应,而不需要再次向目标服务器发送请求,从而提高访问速度。例如,一些大型网站的内容分发网络(CDN)就可以看作是一种特殊的正向代理,它可以缓存网站的静态资源,如图片、CSS 文件等,当用户请求这些资源时,CDN 节点可以直接提供响应,减少了用户的等待时间。
隐藏客户端身份:在使用正向代理服务器时,目标服务器只能看到正向代理服务器的 IP 地址,而无法直接获取客户端的真实 IP 地址,从而在一定程度上隐藏了客户端的身份。例如,在进行一些敏感信息的访问时,用户可以通过正向代理服务器来保护自己的隐私。
3.1.4 典型应用场景
浏览器代理:用户可以在浏览器中配置正向代理服务器,使浏览器通过代理服务器访问互联网。这样可以实现突破网络限制、提高访问速度等功能。
企业网络:企业内部网络通常会设置正向代理服务器,员工的计算机通过代理服务器访问外部网络。企业可以通过代理服务器对员工的网络访问进行监控和管理,例如限制员工访问某些不良网站、记录员工的网络访问行为等。
3.2 反向代理(Reverse Proxy)
反向代理(Reverse Proxy)是一种代理服务器,它位于服务器端,为服务器提供代理服务。下面从工作原理、作用、应用场景以及与正向代理的对比等方面详细介绍反向代理:
3.2.1 工作原理
当客户端向服务器发送请求时,请求首先到达反向代理服务器。反向代理服务器接收到请求后,会根据内部的规则将请求转发到对应的真实服务器上。真实服务器处理完请求后,将响应返回给反向代理服务器,反向代理服务器再将响应转发给客户端。对于客户端来说,它并不知道请求实际上是由真实服务器处理的,而是认为是反向代理服务器直接提供了响应。
3.2.2 示例说明
3.2.3 主要作用
隐藏服务器真实 IP:反向代理服务器作为客户端和真实服务器之间的中间层,客户端只能看到反向代理服务器的 IP 地址,而无法直接获取真实服务器的 IP 地址。这样可以有效保护真实服务器的安全,防止攻击者直接针对真实服务器进行攻击。
负载均衡:当有大量客户端请求时,反向代理服务器可以根据真实服务器的负载情况,将请求均匀地分配到多个真实服务器上进行处理。这样可以避免单个服务器因负载过高而出现性能瓶颈,提高整个系统的处理能力和可用性。例如,大型电商网站在促销活动期间会有大量的用户访问,通过反向代理服务器进行负载均衡,可以确保系统的稳定运行。
提高安全性:反向代理服务器可以对客户端的请求进行过滤和检查,阻止恶意请求到达真实服务器。例如,它可以检测并拦截 SQL 注入、跨站脚本攻击(XSS)等常见的网络攻击,保护真实服务器免受攻击。
缓存加速:反向代理服务器可以缓存一些经常访问的内容,如静态页面、图片等。当客户端请求这些内容时,反向代理服务器可以直接从缓存中返回响应,而不需要再次向真实服务器发送请求,从而提高响应速度,减少真实服务器的负载。
3.2.4 典型应用场景
大型网站:如百度、谷歌等大型互联网网站通常会使用反向代理服务器来处理大量的用户请求。反向代理服务器可以将请求分发到多个数据中心的服务器上,实现负载均衡和提高性能。
企业内部系统:企业内部的应用系统,如企业资源规划(ERP)系统、客户关系管理(CRM)系统等,也可以使用反向代理服务器来提供安全访问和负载均衡功能。员工通过反向代理服务器访问内部系统,提高了系统的安全性和可用性。
3.2.5 与正向代理的区别
代理对象:正向代理代理的是客户端,是为客户端服务的,客户端需要明确配置使用代理服务器;而反向代理代理的是服务器,是为服务器服务的,客户端并不知道自己访问的是代理服务器,以为直接访问的是目标服务器。
应用场景:正向代理常用于突破访问限制、隐藏客户端身份等;反向代理主要用于隐藏服务器真实 IP、负载均衡、提高安全性等。
4. 安装Nginx Proxy Manager
Nginx proxy manager是一个很简单的反向代理工具。
官网:https://nginxproxymanager.com/
门槛极低,操作简单,不需要你掌握很复杂的Nginx配置知识,只需要几步就能很轻松完成反向代理的设置和SSL证书的部署。
4.1 创建安装目录
sudo -i
mkdir -p /root/data/docker_data/npm
这里我们用docker-compost
的方式安装。
cd /root/data/docker_data/npm
vim docker-compose.yml
英文输入法下,按 i
输入一下内容。
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
保存退出
4.2 运行并访问 Nginx Proxy Manager
cd /root/data/docker_data/npm # 来到 dockercompose 文件所在的文件夹下
docker-compose up -d
理论上我们就可以输入 http://ip:81
访问了。
默认登陆名和密码:
Email: [email protected]
Password: changeme
5. 更新 Nginx Proxy Manager
cd /root/data/docker_data/npm
# 进入Nginx Proxy Manager 目录
docker-compose down
# 关闭Nginx Proxy Manager
cp -r /root/data/docker_data/npm /root/data/docker_data/npm.archive
# 万事先备份,以防万一
docker-compose pull
# 更新Nginx Proxy Manager
docker-compose up -d
# 请不要使用 docker-compose stop 来停止容器,因为这么做需要额外的时间等待容器停止;docker-compose up -d 直接升级容器时会自动停止并立刻重建新的容器,完全没有必要浪费那些时间。
docker image prune
# prune 命令用来删除不再使用的 docker 对象。删除所有未被 tag 标记和未被容器使用的镜像
6. 卸载 Nginx Proxy Manager
cd /root/data/docker_data/npm
docker-compose down
rm -rf /root/data/docker_data/npm # 完全删除映射到本地的数据
可以卸载得很干净。