nginx代理
Posted 转角90
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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指其他任意状态码
以上是关于nginx代理的主要内容,如果未能解决你的问题,请参考以下文章