反向代理:反向代理是指从外网用户向指定的内部服务器请求代理并向用户返回数据的方式,这是比较常用的方式
除了提供高-面向企业的性能Web服务,Nginx还可以通过几种预定义的协议将Nginx本身不需要的请求转发给其他服务器处理,以在不同场景下执行不同的功能
生成环境部署架构:
访问逻辑图:
Nginx反向代理http服务:
1.proxy_pass
2.proxy_hide_headerfield
修改前,消息头响应中会携带ETag信息
修改后隐藏ETag信息
3.proxy_pass_headerfield
4.proxy_pass_request_body
5.proxy_pass_request_headers
6.proxy_set_header
由于proxy_set_header只是修改请求报文头信息,增加自定义字段,所以还需要修改后端服务器上的日志定义格式,方便记录将客户端IP写入日志信息
注1:set_proxy_header自定义变量只是在请求报文中添加自定义字段,其字段值是根据系统内置变量人为设置的
注2:此类方法,在多级代理的情况下,客户端IP无法逐层发送到后端服务器,而是需要使用变量$proxy_add_x_forwarded_for来实现
注3:如果必须使用proxy_set_header来传递客户端IP和各个代理层的IP地址,则需要在每个nginx代理层中启用proxy_set_header,并设置不同的自定义变量来引用nginx内置变量$remote_addr,这样nginx的每个阶段都会记录前一个阶段,其中还包括客户端的IP地址,同时在最终的服务器日志格式中,必须添加多个nginx自定义变量,以便所有客户端IP和代理经过它的IP可以被发回。 -结尾。 Server
proxy_add_x_forwarded_for实现多级代理IP地址透明转发示例:需要在每个代理级别开启
实验环境:
7.关于反向代理一些时序参数
8.proxy_ignore_client_abort
9.哈希表大小设置
客户端-----http协议-------nginx(代理服务器,10.0.0.86)-----http---apache(10.0.0.85)
客户端通过访问nginx上定义的虚拟主机中的域名server_name,通过内部定义的位置匹配规则转发到服务器10.0.0.85
可能出现的错误如果代理服务器和后端服务器连接有问题:
如果后端服务器要发送图片资源放在固定目录下,也可以自定义,比如保存到/var/www/html/static,则nginx位置修改如下:
缓存功能相关参数:
实验环境:
proxy_pass允许Nginx将客户端请求转发到单个后端服务器,但无法转发到特定服务器组,也无法向后端服务器提供相应的服务器状态。
Nginx可以提供服务器数据包转发、权重分配、状态监控、使用不同的调度算法等高级功能。 基于ngx_http_upstream_module模块
关于ip_forward
注意:在本实验中,必须先禁用缓存
对固定URI的访问将安排在同一服务器
下一篇:怎么关闭nginx