目录
什么是反向代理
反向代理(Proxy)指用代理服务器接受外部的连接请求,然后将请求转发给真实提供服务的服务器,并将从服务器上得到的结果返回给请求连接的客户端。示意图如下:
反向代理好处如下:
- 保护目标服务器的资源安全:反向代理可以隐藏目标服务器的真实 IP 地址和端口,防止恶意用户直接攻击目标服务器。只有反向代理服务器对外可见,从而保护了目标服务器的资源安全。
- 节省有限的 IP 地址资源:由于公网 IPv4 地址资源有限,通过使用反向代理,可以将多个后端服务器(用内网ip地址即可)隐藏在同一个公网 IP地址后面。这样,可以节省 IP 地址资源并最大限度地提供服务。
- 可提供更好的服务体验:反代理服务器本身可提供非常多的附加功能,改善系统的整体服务体验,并节省系统建设成本,如高并发、缓存加速、安全保护等都可由代理服务器提供,而不是应用本身来考虑。
- 系统易扩展、易维护:反代理服务器后的真实服务器,可按需扩展;可按维护计划灵活维护,不影响外部使用体验。
Nginx反向代理
Nginx初衷是解决C10K问题,因此天然就是反向代理服务器,在此基础上Nginx才可以实现负载均衡、缓存加速、SSL 终端、安全过滤等更多功能。
反向代理功能由ngx_http_proxy_module模块提供。
反向代理例子如下:
location / {
# 指向被代理服务器
proxy_pass http://localhost:8000;
# 设置转发请求头
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
反