正向代理和反向代理区别要理解 Nginx 的正向代理与反向代理核心是明确 “代理服务器替谁做事”—— 正向代理替客户端访问目标服务反向代理替服务端接收客户端请求二者的服务对象、应用场景和核心作用完全不同。以下是具体简述正向代理是服务端不知道真实客户端反向代理是客户端不知道真实服务端1. 正向代理Forward Proxy核心定义代理服务器位于客户端与目标服务器之间专门替客户端向目标服务器发起请求目标服务器无法直接识别真实客户端只能看到代理服务器的地址。简单说客户端 “借” 代理的身份去访问外部服务。2. 反向代理Reverse Proxy核心定义代理服务器位于客户端与后端服务集群之间专门替后端服务接收客户端的请求客户端无法直接识别真实的后端服务器只能看到代理服务器的地址。简单说服务端 “推” 代理到前端让客户端以为代理就是最终服务。nginx代理服务器反向代理配置server { listen 80; server_name static.com; #核心反向代理指令 location / { proxy_pass http://192.168.74.7:80; #指定服务端IP因为Nginx是七层所以前面必须带http #头部与协议配置 proxy_set_header Host $http_host; #指定host携带头部信息 proxy_http_version 1.1; #指定http版本号长连接 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #记录客户端IP #超时控制 proxy_connect_timeout 30s; #连接超时时间 proxy_read_timeout 60s; #响应超时时间 proxy_send_timeout 60s; #数据回传超时时间 #缓冲区配置,nignx会把后端返回的内容先放到缓冲区当中然后再返回给客户端,边收边传, 不是全部接收完再传给客户端 proxy_buffering on; #开启缓冲区 proxy_buffer_size 32k; #头部信息缓冲区大小 proxy_buffers 4 128k; #数据缓冲区大小 } }proxy_params文件Nginx 支持将重复的代理配置如头部、超时、缓冲区等参数抽取到独立的配置文件如proxy_params中再通过include指令引入既能减少重复代码又能统一管理配置尤其适合多虚拟主机或多代理场景。1.创建proxy_params文件在 Nginx 配置目录通常是/etc/nginx/或/etc/nginx/conf.d/下新建proxy_params写入通用的代理参数# /etc/nginx/proxy_params proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; # 补充协议类型http/https便于后端识别 proxy_http_version 1.1; proxy_set_header Connection ; # 保持长连接 proxy_connect_timeout 30s; proxy_read_timeout 60s; proxy_send_timeout 60s; proxy_buffering on; proxy_buffer_size 32k; proxy_buffers 4 128k; proxy_busy_buffers_size 256k; proxy_temp_file_write_size 256k;2在虚拟主机配置中引入server块可以简化为server { listen 80; server_name static.com; location / { proxy_pass http://192.168.74.7:80; # 后端服务地址 include proxy_params; # 引入通用代理参数 } }负载均衡配置服务端[rootlocalhost conf.d]# cat default.conf upstream webs { server 192.168.74.7; server 192.168.74.8; } server { listen 80; server_name static.com; location / { proxy_pass http://webs; include proxy_params; } }客户端[laoliweb01 ~]$ cat /etc/nginx/conf.d/static.conf server { listen 80; server_name static.com; location / { root /code/test01; index index.html; } } [laoliweb02 ~]$ cat /etc/nginx/conf.d/static.conf server { listen 80; server_name static.com; location / { root /code/test01; index index.html; } }当你在客户端访问http://static.com时客户端的请求首先发送到前端代理服务器运行着包含upstream webs配置的 Nginx因为客户端的hosts已将static.com指向该代理服务器的 IP。前端代理服务器根据upstream webs定义的集群192.168.74.7和192.168.74.8按照负载均衡策略默认轮询将请求转发到其中一台后端服务器。后端服务器7 或 8的 Nginx 会根据自身static.conf配置从/code/test01目录读取index.html并返回给前端代理服务器。前端代理服务器再将响应结果转发给客户端最终客户端看到的是后端服务器7 或 8上的静态内容。