nginx代理
代理服务
Syntax: proxy_pass URL;
Default: --;
Content: server,locaion
正向代理
代理的是客户端,服务端看不到真正的客户端。如:通过公司代理服务器上网
配置
proxy_pass $scheme://$host$request_uri;
resolver 8.8.8.8;
代理https请求
需要第三方模块
https://github.com/chobits/ngx_http_proxy_connect_module
配置
server {
listen 3128;
# dns resolver used by forward proxying
resolver 8.8.8.8;
# forward proxy for CONNECT request
proxy_connect;
proxy_connect_allow 443 563;
proxy_connect_connect_timeout 10s;
proxy_connect_read_timeout 10s;
proxy_connect_send_timeout 10s;
# forward proxy for non-CONNECT request
location / {
proxy_pass http://$host;
proxy_set_header Host $host;
}
}
反向代理
代理的是服务端,客户端看不到正在的服务端。
resolver 8.8.8.8; # 谷歌的域名解析地址,配置域名进行访问的时候,需要配置此项目,否则会报502错误
server {
location ~ .*\.json$ {
# $http_host 要访问的主机名, $request_uri 请求路径
proxy_pass http://$http_host$request_uri;
}
}
官网解释
http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache
配置
http模块:
proxy_cache_path /ngx_tmp levels=1:2 keys_zone=test_cache:100m inactive=1d max_size=10g ;
location模块:
add_header Nginx-Cache "$upstream_cache_status";
proxy_cache test_cache;
proxy_cache_valid 168h;
proxy_cache_use_stale
默认off
在什么时候可以使用过期缓存
可选error
| timeout
| invalid_header
| updating
| http_500
| http_502
| http_503
| http_504
| http_403
| http_404
| http_429
| off
proxy_cache_background_update
默认off
运行开启子请求更新过期的内容。同时会把过期的内容返回给客户端
proxy_no_cache proxy_cache_bypass
指定什么时候不使用缓存而直接请求上游服务器
proxy_no_cache $cookie_nocache $arg_nocache$arg_comment;
proxy_no_cache $http_pragma $http_authorization;
如果这些变量如果存在的话不为空或者不等于0,则不使用缓存
proxy_cache_convert_head
默认 on
是否把head请求转换成get请求后再发送给上游服务器 以便缓存body里的内容
如果关闭 需要在 cache key
中添加 $request_method 以便区分缓存内容
proxy_cache_lock
默认off
缓存更新锁
proxy_cache_lock_age
默认5s
缓存锁超时时间
断点续传缓存 range
当有完整的content-length之后即可断点续传
在反向代理服务器中需向后传递header
proxy_set_header Range $http_range;
proxy_cache_key中增加range
proxy_cache_max_range_offset
range最大值,超过之后不做缓存,默认情况下 不需要对单文件较大的资源做缓存
proxy_cache_methods
默认 head get
proxy_cache_min_uses
默认1
被请求多少次之后才做缓存
proxy_cache_path
path 指定存储目录
以cache_key取md5值
- levels=1:2
目录层级数及目录名称位数
取mdb5后几位
TMPFS
- use_temp_path
默认创建缓存文件时,先向缓冲区创建临时文件,再移动到缓存目录
是否使用缓冲区
- inactive
指定时间内未被访问过的缓存将被删除
缓存清理
purger
需要第三方模块支持
https://github.com/FRiCKLE/ngx_cache_purge
配置
location ~ /purge(/.*) {
proxy_cache_purge test_cache $1;
}
自定义cachekey
proxy_cache_key $uri;
proxy_cache_key
默认$scheme$proxy_host$request_uri
缓存的key
proxy_cache_revalidate
如果缓存过期了,向上游服务器发送“If-Modified-Since” and “If-None-Match来验证是否改变,如果没有就不需要重新下载资源了
proxy_cache_valid
可以针对不容http状态码设置缓存过期时间
不设置状态码会默认200, 301, 302
proxy_cache_valid 200 302 10m;
proxy_cache_valid 301 1h;
proxy_cache_valid any 1m;
any指其他任意状态码
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)