什么是代理?
代理,英文叫 Proxy,字面意思就是"代替"。在计算机网络里,代理就是一个中间人,帮你去访问目标网站,再把结果拿回来给你。
打个比方:你想在国外网站买件东西,但网站不直接发货到你所在的国家。于是你找了一个朋友住在国外,让他帮你买,再寄给你。这个朋友就是个"代理"。
电脑访问互联网也是一样。你的电脑把请求发给代理服务器,代理服务器再去访问目标网站,拿到数据后再传回给你。
代理有什么用?
代理的核心价值有三点:
第一,加速。 你经常访问的网站,代理服务器会把结果存一份。下次你再访问,直接从代理拿,不用重新跑一趟。这就是缓存加速的原理。
第二,安全。 代理可以帮你过滤掉恶意的内容,挡住病毒和攻击。很多公司的网络都靠代理来保护内网安全。
第三,突破限制。 有些网站只在特定地区开放。通过设在不同国家的代理,就能访问这些受限制的内容。
正向代理和反向代理
代理主要分为两种,它们的区别一句话就能说清:正向代理代理的是客户端,反向代理代理的是服务器。
正向代理就像你找的那个国外朋友。目标网站不知道是你访问的,它只知道是代理在访问。你对外隐藏了自己的真实身份。常见的科学上网工具、公司内部的上网代理,都是正向代理。
反向代理就完全反过来。客户端不知道背后有哪些服务器,它以为自己在直接和一台服务器通信。实际上请求被反向代理分发到了多台真实的服务器。你访问淘宝时,根本不知道后台有上千台机器在同时帮你处理请求——这就是反向代理在幕后调度。
Nginx、Apache、HAProxy 都是常用的反向代理软件。
怎么用?
用正向代理很简单。以浏览器为例,在设置里找到网络设置,填入代理服务器的地址和端口就可以了。很多开发工具也支持设置代理环境变量,比如:
export http_proxy=http://代理地址:端口
export https_proxy=http://代理地址:端口
用反向代理需要你在服务器上配置。以 Nginx 为例,几行配置就能把请求转发到后端服务:
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://后端服务地址:端口;
}
}
反向代理常用于负载均衡、SSL 加密终止、静态资源缓存等场景。
总结一下
代理就是网络通信中的"中间人"。正向代理帮客户端隐藏身份,反向代理帮服务器调度流量。它们一个在客户端这边,一个在服务器那边,各司其职。
理解代理的概念,对理解 CDN、负载均衡、API 网关这些高级概念都是基础。下次你在浏览器设置里看到"代理"选项时,就不会一脸茫然了。