MarkdownHTML
什么是代理
代理一词往往并不陌生, 该服务我们常常用到如(代理理财、代理租房、代理收货等等),如下图所示
没有代理情景
客户端直接请求服务端,服务端直接响应客户端。
企业场景(有代理:)
那么在互联网请求里面,客户端往往无法直接向服务端发起请求,那么就需要用到代理服务,来实现客户端和服务通信,如下图所示
Nginx按照应用场景划分:代理分为正向代理、反向代理
正向代理
用于内部上网中
客户端<—>代理->服务端
反向代理
用于公司集群架构中,客户端->代理<—>服务端
正向代理与反向代理的区别
1.区别在于形式上服务的”对象”不一样
2.正向代理代理的对象是客户端,为客户端服务
3.反向代理代理的对象是服务端,为服务端服务
Nginx作为代理服务,可支持的代理协议非常的多,具体如下图
反向代理使用协议
模块总结
模组
URL可以是:
示例:
假设代理服务器返回了头部字段“ ”
将头部字段字符串重写为“ ”。
url跳转修改返回location
跳转修改返回[不常用]
参考下载站点:http://test.oldboy.com/Nginx_File/
添加发往后端服务器的请求头信息
常用请求头:
是模块提供的嵌入式变量,表示“X-Forwarded-For”客户机请求头字段,并附加变量,用逗号分隔。如果客户端请求标头中不存在“ X-Forwarded-For”字段,则该变量等于变量。
启用或禁用代理服务器响应的缓冲。
启用缓冲后,nginx会尽快从代理服务器收到响应,并将其保存到proxy_buffer_size和proxy_buffers指令设置的缓冲区中 。如果整个响应都无法容纳到内存中,则可以将一部分响应保存到磁盘上的临时文件中。写入临时文件由 proxy_max_temp_file_size和 proxy_temp_file_write_size指令控制。
禁用缓冲后,响应一收到就立即传递给客户端。nginx不会尝试从代理服务器读取整个响应。nginx一次可以从服务器接收的最大数据大小由proxy_buffer_size指令设置。
Nginx反向代理配置实例
环境准备
web01配置:
lb01配置:
windows配置
在文件中添加一行
抓包查看:
从图中可以看出,当我们只用代理的时候,会发现如下问题:
1.10.0.0.1请求10.0.0.5的时候使用的是域名 ,协议是HTTP/1.1;
10.0.0.5请求10.0.0.7的时候使用的是IP:port,协议是HTTP/1.0;
2.10.0.0.7的nginx访问日志只显示代理服务器的地址
当访问80端口的时候,没有域名的情况下,默认会去找排在最上面的那个配置文件。
所以我们需要解决这个问题,保留住最开始的请求头部信息。
,这个模块可以帮我们解决这个问题
使用主机名
使用HTTP/1.1协议
记录客户端来源IP
lb01修改配置,重载nginx:
抓包查看:
lb01配置代理web01的wordpress和wecenter
windows修改hosts测试:
在文件中,