(五)nginx(proxy七层,fastcgi反向代理,ip透传,缓存,502,504错误,nginx调度算法upstream)

一. nginx反向代理

nginx支持健康行检查----也就是比LVS更强
可以支持各种应用层的反向代理
在这里插入图片描述
反向代理:reverse proxy,可代理外网用户的请求到内部的指定web服务器,并将数据返回给用户

nginx除了可以在企业提供高性能的web服务之外,另外还可以将本身不具备的请求通过某种预定义的协议转发至其它服务器处理,不同的协议就是nginx服务器与其他服务器进行通信的一种规范

主要在不同的场景使用以下模块实现不同的功能:

ngx_http_proxy_module: 将客户端请求以http协议转发至后端服务器

ngx_http_fastcgi_module:将客户端对php请求以fastcgi协议转发至后端
ngx_http_uwsgi_module:将客户端对Python请求以uwsgi协议转发至后端
ngx_stream_proxy_module:将客户端请求以tcp协议转发至后端服务器

同构:用户请求http协议到nginx服务器并由http协议到后端服务器(协议相同
异构:用户请求http协议,nginx服务器由不同协议到后端服务器(协议不同
在这里插入图片描述

在这里插入图片描述

二. proxy_module代理模块

http协议转发至后端服务器

ngx_http_proxy_module模块:

nginx作为代理---->转发请求到后台服务器

proxy_pass URL;
 注意:proxy_pass后面路径不带uri时,会将location的uri传递(附加)给后端主机
	server {
   
		...
		server_name HOSTNAME;
		location /uri/ {
   
			proxy_pass http://host[:port]; 注意:最后没有/ 
	}
	...
}

http://HOSTNAME/uri --> http://host/uri 

如果上面有 /,即:http://host[:port]/
意味着:http://HOSTNAME/uri --> http://host/完全 置换,

完全置换

	location /uri/ {
   
		proxy_pass http://host/;
	}


http://HOSTNAME/uri/ --> http://host/

如果location定义其uri时使用了正则表达式的模式,则proxy_pass之后必不能使用uri; 用户请求时传递的uri将直接附加至后端服务器之后

	location ~|~* /uri/ {
   
		proxy_pass http://host;   不能加/
	}

http://HOSTNAME/uri/ --> http://host/uri/

1.将客户端的ip交付给后端服务器(ip透传)

默认中间有代理服务器,那么后端服务器,收到的信息为代理服务器的ip,而不是真正的客户端

需要进行配置
1.修改代理服务器配置参数
2.修改后端服务器的日志配置

  1. **proxy_set_header field value;**真正的客户端地址
    设定转发往后端主机的请求报文的请求首部的值;

可以在很多地方加入: http, server, location

只有一个代理服务器
			#  $remote_addr远程客户端地址
			#后端服务器的日志格式加入X-Real-IP
proxy_set_header X-Real-IP $remote_addr;

建议

中间 有多个代理服务器(每个代理服务器都得加,)

			#会把中间经过的所有的ip地址都会保留下来
			# $proxy_add_x_forwarded_for
			#后端服务器的日志格式加入X-Forwarded-For 
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

最终 请求报文的标准格式如下:
X-Forwarded-For: client1, proxy1, proxy2

将后端服务器的log配置改为,中间代理服务器的X-Forwarded-For
在这里插入图片描述
注意要修改后端服务器的日志格式—>加入

\"%{
   X-Forwarded-For}i\"

在这里插入图片描述
就会显示真正的客户端地址
在这里插入图片描述

2. nginx反向代理-----缓存功能

  1. proxy_cache_path; 缓存功能

定义可用于proxy功能的缓存;http

需要指定缓存路径

示例:在http配置定义缓存信息

proxy_cache_path /var/cache/nginx/proxy_cache #定义缓存保存路径,proxy_cache会自动创建 

levels=1:2:2 #定义缓存目录结构层次,1:2:2 可以生成2^4x2
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值