nginx的proxy模块、proxycache缓存、upstream定义集群

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: nginx的proxy模块、proxycache缓存、upstream定义集群

一、基于nginx将客户端请求反向代理至后端服务器:
1、proxy_pass指令只能用于location上下文:

  1. proxy_pass 后面的路径不带URI时,将会把location的URI传递给后端主机,如location /img/ {
    proxy_pass http://172.18.224.101;

}
客户端请求的URL被这个location匹配时,请求的资源为后端服务器172.18.224.101/img/

b.proxy_pass 后面是一个URI时,将会把location的URI替换掉,如
如location /img/ {
proxy_pass http://172.18.224.101/bbs/;
}
客户端请求的URL被这个location匹配时,请求的资源为后端服务器172.18.224.101/bbs/

c.如果location定义时使用了正则表达式匹配时,proxy_pass后面不能使用URI,否则将被认定为语法错误:
location ~|~* PATTERN {
proxy_pass http:172.18.224.101;
}

2、proxy_set_header filed value;
使用proxy_pass反向代理后,后端资源服务器日志默认记录的是反代服务器的请求信息,这种日志不是我们想要的,期望记录的日志是真正客户端请求资源的信息,可通过proxy_set_header指令达到目的,如让后端服务器记录客户端的IP:
a.在nginx的http上下文或者server里定义,proxy_set_header X-RIP $remote_addr ###X-RIP自定义一个真正的客户端IP字段,其值为nginx内建的变量remote_addr
b.更改后端服务器的web日志格式,如改httpd日志格式
10
将刚才定义的X-RIP替换掉%h即可
11
这样后端日志将记录真正客户端的信息,要是想记录其他信息也可以自己定制

3、nginx的proxy反代缓存配置及调用:
nginx的反向代理缓存一般在http上下文定义,然后在location模块中调用

  1. http配置如proxy_cache_path /data/cache/nginx levels=2:2 keys_zone=nginxcache:20M inactive=1d max_size=1g;###proxy_cache_path 定义缓存目录,levels=2:2定义缓存目录结构,keys_zone=nginxcache:20M定义缓存空间及大小,inactive定义失效时间
    b.location上下文调用缓存配置:

12
proxy_cache nginxcache ###调用缓存,value跟上文http定义的keys_zone名称
proxy_cache_key $request_uri###用请求的url定义缓存键
proxy_cache_valid 200 301 302 1d;####定义缓存类型及时间

4、nginx反向代理的其他配置:
a.proxy_conect_timeot 75;##与后端主机发送响应报文的超时时长,最长75秒
b.proxy_send_timeout ##向后端主机发送请求报文的超时时长,默认60秒

5、ngx_http_header_module

  1. add_header X-via $server-addr ###向响应报文添加自定义首部并赋值
  2. add_header x-cache $upstream_cache_status ####HIT缓存命中,miss缓存未命中
    5、nginx的upstream模块

upstream主要是将多个后端主机定义为服务器组,而后有proxy_pass,fastcgi_pass等进行引用。只能用在http上下文

  1. upstream webserver {
    server 172.18.224.101###可选参数有weight服务器的权重,max_fails=3定义最大失败尝试次数,backup定义该主机为备用主机,down手动使该主机下线

}
15

定义完upsteam后在location调用即可:
proxy_pass http://webserver; ###调用upstream定义的名字

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
3月前
|
缓存 应用服务中间件 nginx
成功解决 Nginx更新静态资源无效 ,Nginx静态资源更新不及时,Nginx清除缓存
这篇文章讨论了在使用Nginx进行动静分离时遇到的静态资源更新不及时的问题。问题描述了在服务器上更新静态资源后,访问页面时页面没有显示更新的情况。文章提供了解决这个问题的方法,即清除浏览器缓存,并提供了相关参考文章链接。此外,还展示了问题复现的步骤和正常情况的预期结果。
成功解决 Nginx更新静态资源无效 ,Nginx静态资源更新不及时,Nginx清除缓存
|
3月前
|
负载均衡 应用服务中间件 API
Nginx:location配置模块的用法(一)
Nginx:location配置模块的用法(一)
404 2
|
3月前
|
Java 应用服务中间件 Shell
Nginx+Keepalived+Tomcat 实现Web高可用集群
Nginx+Keepalived+Tomcat 实现Web高可用集群
102 0
|
3月前
|
存储 缓存 Java
Java本地高性能缓存实践问题之如何定义Caffeine的缓存
Java本地高性能缓存实践问题之如何定义Caffeine的缓存
|
24天前
|
存储 缓存 监控
|
21天前
|
存储 缓存 分布式计算
大数据-89 Spark 集群 RDD 编程-高阶 编写代码、RDD依赖关系、RDD持久化/缓存
大数据-89 Spark 集群 RDD 编程-高阶 编写代码、RDD依赖关系、RDD持久化/缓存
40 4
|
24天前
|
存储 缓存 负载均衡
Nginx代理缓存机制
【10月更文挑战第2天】
54 4
|
23天前
|
存储 缓存 NoSQL
Nginx缓存
Nginx缓存
26 1
|
25天前
|
应用服务中间件 nginx C++
nginx的cgi模块
nginx的cgi模块
19 0
|
3月前
|
负载均衡 前端开发 应用服务中间件
FastDFS+Nginx+fastdfs-nginx-module集群搭建
FastDFS+Nginx+fastdfs-nginx-module集群搭建