一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第3天,点击查看活动详情
正向代理和反向代理
正向代理
一般的访问流程是客户端直接向目标服务器发送请求并获取内容,使用正向代理后,客户端改为向代理服务器发送请求,通过访问代理服务器从而访问到目标服务器。正向代理隐藏了真实的客户端,为客户端收发请求,使真实客户端对服务器不可见。
举个例子,你的浏览器无法直接访问谷哥,这时候可以通过一个代理服务器来帮助你访问谷哥,那么这个服务器就叫正向代理。
反向代理
与一般访问流程相比,使用反向代理后,直接收到请求的服务器是代理服务器,然后将请求转发给内部网络上真正进行处理的服务器,得到的结果返回给客户端。反向代理隐藏了真实的服务器,为服务器收发请求,使真实服务器对客户端不可见。
Nginx反向代理作用
- 保障应用服务器的安全:增加一层代理,可以屏蔽危险攻击,更方便的控制权限。
- 实现负载均衡:配置代理到upstream块,upstream块配置负载均衡。
- 实现跨域:前后端分离的工程中,前端服务器和后端服务器的host、port不同,有跨域问题,nginx配置代理路径替换实际访问路径。
反向代理基本配置
-
proxy_pass
语法: proxy_pass url;
配置块:location、if
将当前请求反向代理到url指定地服务器上。url可以是域名或ip地址加端口,也可以是unix句柄,还可以是负载均衡的upstream块。
-
proxy_method
语法:proxy_pass method;
配置块:http、server、location
配置转发时的协议方法名。比如配置
proxy_pass POST;
那么客户端发来的GET请求在转发时方法名也会改为POST。
-
proxy_hide_header
语法:proxy_hide_header header;
配置块:http、server、location
指定哪些请求头不会被转发。
-
proxy_pass_header
语法:proxy_pass_header header;
配置块:http、server、location
与proxy_hide_header作用相反,将原来禁止转发的header设置为允许转发。
-
proxy_pass_request_body
语法:proxy_pass_request_body on|off;
默认:proxy_pass_request_body on;
配置块:http、server、location
是否转发HTTP包体部分。
-
proxy_pass_request_headers
语法:proxy_pass_request_headers on|off;
默认:proxy_pass_request_headers on;
配置块:http、server、location
是否转发HTTP头部。