前言

在大学的数通课上,我曾接触过反向代理的概念,但由于当时并没有认真听讲,所以对这个概念一直比较模糊。最近,由于友站遇到一些备案问题,域名解析到了我的服务器上,我才重新开始研究反向代理的原理和应用。

什么是反向代理?

正向代理 vs 反向代理

正向代理:通常是用户主动设置的代理,用户通过代理服务器访问目标网站。代理服务器在此过程中充当了中介的角色,但目标服务器并不知道用户的真实身份。
正向代理原理解释
反向代理:与正向代理相反,反向代理是由服务器端发起的。在用户访问服务器时,代理服务器决定将请求转发到哪台内部服务器。反向代理通常用于负载均衡、网站加速以及隐匿真实服务器等场景。
反向代理

反向代理的工作原理

反向代理是服务器端的技术,它隐藏了后端服务器的真实信息。例如,在负载均衡场景中,反向代理可以根据不同的策略将用户的请求转发到不同的服务器。这样做可以提高网站的性能和安全性。

为什么使用反向代理?

在我的案例中,我使用境外服务器作为反向代理服务器,原因是:

  • 境外服务器不需要备案,可以避免因备案问题导致的访问限制。
  • 通过反向代理,将外部请求转发到国内服务器,实现在没有备案的情况下使用域名访问国内服务器上的网站。
    然而,这种做法也有一个明显的劣势:由于经过境外服务器的中转,首次连接时可能会出现较慢的响应速度。

具体实现:如何配置Nginx反向代理

为了实现通过B.biz访问国内服务器的服务,我们需要准备好以下条件:

  • 两个域名:A.topB.biz,二者都要解析到境外服务器上
  • 两台服务器:境外服务器(IP: 55.44.33.22)和境内服务器(IP: 10.10.10.5,端口:7788
    假设我们要实现的是,通过B.biz访问境内服务器上的网站(在端口7788上运行)。

步骤 1:安装Nginx

首先,确保在境外服务器上正确安装了Nginx。大多数服务器面板(例如1Panel)提供了简便的一键安装功能,可以通过面板进行安装。

步骤 2:配置Nginx反向代理

  1. 登录到境外服务器的管理后台,进入网站管理页面。
    nginx1.png
  2. 点击“创建网站”,然后选择“反向代理”选项。
    nginx2.png
  3. 配置反向代理,填写以下内容:
    nginx3.png
  4. 编辑反向代理配置文件
    在新建出来的网站右侧选项中选择配置->反向代理->源文并修改成以下格式
location ^~ / {
    proxy_pass http://10.10.10.5:7788; 
    proxy_set_header Host A.top;  # 设置访问境内服务器时的Host头部,避免备案拦截
    proxy_set_header X-Real-IP $remote_addr; 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    proxy_set_header REMOTE-HOST $remote_addr; 
    proxy_set_header Upgrade $http_upgrade; 
    proxy_set_header Connection $http_connection; 
    proxy_set_header X-Forwarded-Proto $scheme; 
    proxy_http_version 1.1; 
    add_header X-Cache $upstream_cache_status; 
    add_header Cache-Control no-cache; 
    proxy_ssl_server_name off; 
    proxy_ssl_name $proxy_host; 
}

解释配置项:

  • proxy_pass http://10.10.10.5:7788;:这行指令将请求转发到国内服务器10.10.10.5上的7788端口。
  • proxy_set_header Host A.top;:设置反向代理时的Host头部为A.top,确保请求被正确转发到目标服务器。如果不设置,可能会导致目标服务器无法识别请求来源。
  • proxy_set_header系列指令:这些是常见的头部设置,确保客户端的真实IP等信息能够传递给目标服务器。

至此,你的网站就可以通过B.biz访问了。

一个还在寻找自己的三流开发者