通常情况下,客户端向Web服务器发送请求,Web服务器响应请求并返回数据。
而在反向代理中,客户端的请求会转发给反向代理服务器
反向代理是将客户端的请求转发给后端服务器的一种方式。
通过使用反向代理,可以实现负载均衡、缓存、HTTPS支持等功能,从而提高网站的性能和安全性。
在Web应用开发中,反向代理是一种常见的服务器部署方式。
Nginx作为一个高性能的反向代理服务器,具有灵活的配置和强大的性能优势。
上图:


反向代理指的是浏览器/客户端并不知道自己要访问具体哪台目标服务器,
只知道去访问代理服务器 ,代理服务器再通过反向代理 +负载均衡实现请求分发到应用服务器的一种代理服务。
反向代理服务的特点是代理服务器 代理的对象是应用服务器,也就是对于浏览器/客户端 来说应用服务器是隐藏的。
反向代理配置示例
#反向代理+负载均衡 upstream reverseProxyServer{ #负载均衡应用服务器A: 权重为10,10s内连接请求失败2次 #nginx在10s内认为server是不可用的,将不在发送请求给这台服务器 server 应用服务器A的IP:8080 weight=10 max_fails=2 fail_timeout=10s; #可以修改为本机服务器端口号,使用多端口,或多域名提供服务。 server 0.0.0.0:8081 weight=5 fail_timeout=10s max_fails=2; server 0.0.0.0:8082 weight=1 fail_timeout=10s max_fails=2; server 应用服务器C的IP:8083 weight=5 fail_timeout=10s max_fails=2; } server { #监听80端口,http默认端口80 listen 80; #服务器IP或域名 server_name localhost; #反向代理请求路径中含有/的所有请求到upstream定义的对应反向代理模块 location / { proxy_pass http://reverseProxyServer; } }
Nginx缓存配置
反向代理的缓存缓存是提高网站性能的关键。
Nginx在反向代理中提供了灵活的缓存配置。
下面为缓存配置示例:
http { //缓存路径及缓存大小 proxy_cache_path /path/to/cache levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m; upstream backend { server 0.0.0.0:82;//格式:ip:8081,或本地127.0.0.1:8080 加相应的端口号,实现透明代理访问 } server { listen 80; server_name example.com; location / { proxy_cache my_cache; proxy_cache_valid 200 10m; //缓存时间 10分钟 proxy_cache_valid any 10m; proxy_pass http://backend; # 定义缓存的键值,可以根据需要自行定义 proxy_cache_key "$scheme$request_method$host$request_uri"; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } }