Nginx正反向代理

首先应该先明确正向代理和反向代理的配置方式是一样的,不一样的是两者的作用和应用场景不同

一 概念

正向代理

客户端在访问服务器中间加了一个代理服务器,客户端需要知道这个代理服务器的的IP主动连接,再通过代理服务器访问目标服务器。重点就是代理服务器和目标服务器并不是一体的,目标服务器的本意没想通过代理服务器返回资源,是客户端的意图。
在这里插入图片描述

反向代理

客户端在访问服务器时,当前的服务器并不是直接提供资源的服务器,这个服务器其实是代理服务器,它将访问目标服务器,带着结果给客户端响应。重点就是代理服务器(客户端访问的那个服务器)和目标服务器是一体,放客户端并不知道自己访问的是代理服务器(透明),提供服务的一方就是想让你先访问代理服务器,代理服务器再去访问目标服务器。
在这里插入图片描述
举个例子就是甲、乙两家公司有合作,A、B属于甲公司,C、D属于乙公司,甲公司的A和乙公司需要进行沟通,第一种情况B的替A传话给C,这就是正向代理;第二种情况A给乙公司发邮件想跟D确认情况,但是D只是个传话的,决策权在C,D跟C说了情况再跟A反馈,这就是反向代理。

正向代理 反向代理
主要作用 屏蔽客户端IP、集中式缓存、解决客户端不能直连服务端的问题。 屏蔽服务端内部实现、负载均衡、缓存。
应用场景 爬虫、翻墙、maven 的nexus 服务 Nginx 、Apache负载均衡应用

二 配置

在location配置proxy_pass参数,表明指向的地址
正向代理演示:
访问虚拟机的/baidu.html,将其正向代理到百度主页

#正向代理到baidu 服务
location = /baidu.html {
  proxy_pass http://www.baidu.com;
}

在这里插入图片描述
反向代理演示:
访问虚拟机的/snowman/hello.html,反向代理到虚拟机的tomcat的hello.html文件
先在tomcat地webapp目录下建个snowman/hello.html文件

location = /snowman {
  proxy_pass http://127.0.0.1:8080;
}

在这里插入图片描述
在这里插入图片描述
代理相关参数:

proxy_pass           # 代理服务
proxy_redirect off;   # 是否允许重定向
proxy_set_header Host $host; # 传 header 参数至后端服务
proxy_set_header X-Forwarded-For $remote_addr; # 设置request header 即客户端IP 地址
proxy_connect_timeout 90; # 连接代理服务超时时间
proxy_send_timeout 90; # 请求发送最大时间
proxy_read_timeout 90;  # 读取最大时间
proxy_buffer_size 4k; 
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k; 
proxy_temp_file_write_size 64k;

猜你喜欢

转载自blog.csdn.net/snow____man/article/details/83587735