Nginx反向代理与正向代理
ZYHWJL

Nginx

Nginx是一个轻量级的、高性能的Http和反向Web服务器,同时也提供IMAP/POP3/SMTP服务。 –百度百科

正向代理

简述

正向代理只是将代理服务器作为中转节点,所有的数据不管是对于起始客户端或最终服务端,两者都是相互透明的,也就是说两者相互知道对方的存在。

例如国内用户通过代理访问一些404网站,实际上网站是知道用户的存在,用户也知道服务端的存在。

反向代理

简述

反向代理是一种将客户端请求通过转发的方式,发送至服务器端,再将服务端的请求发送至客户端。客户端与服务端是相互不透明的,也就是说客户端即不知道服务端的存在,服务端也不知道客户端的存在。客户端认为自己在与代理服务器交互,而服务端也认为自己与代理服务器交互,而实际上是客户端与服务端在交互,代理服务器只负责数据的转发,并不对数据进行处理。

但在实际应用中一般Nginx做服务器做负载均衡,会将客户端信息暴露给服务端,只有这样服务端才可根据真实的客户端信息进行业务处理。

背景介绍

存在此需求:客户端A将请求发送至服务器B,但不能向服务器B暴露自己的IP。根据以上,得出Nginx做反向代理服务器简直完美匹配。

反向代理配置

1
2
3
4
5
6
7
8
9
10
11
12
13
server{
listen 58089;
# server_name 当配置listen后不起作用
server_name localhost;
location / {
proxy_pass http://xxx.xxx:8080;

# 转发客户端Header
proxy_set_header Host $http_host; # 转发Host 不设置时为proxy_pass地址
# proxy_set_header X-Real_IP $remote_addr; # 转发Ip 不设置时服务端获取的为代理服务器地址
proxy_set_header Referer ""; # 删除客户端请求Referer 不设置时默认为客户端请求地址
}
}

通过以上配置即可实现需求,需要注意的是

  • 并非客户端未传入的参数,代理服务器就不转发,在数据传输中,可能有多余参数被添加并被转发。如Referer