代理s3的nginx缓存服务器配置
来源:互联网 发布:淘宝代理费 编辑:程序博客网 时间:2024/05/12 23:49
需求:
1: 实现代理s3的nginx缓存服务器
2: 实现 / -> /index.html映射,
eg:
http://www.abc.com-> http://www.abc.com/index.html,
http://www.abc.com/abc/ -> http://www.abc.com/abc/index.html,
http://www.abc.com/a/b/ -> http://www.abc.com/a/b/index.html
3: 实现nginx代理服务器的 / 路径到s3的指定目录映射,即 / -> youprojectname.s3.amazonaws.com./release/
实现:
http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /tmp/access.log; error_log /tmp/error.log debug; proxy_cache_lock on; proxy_cache_lock_timeout 60s; proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=s3cache:200m max_size=10g; # 设置Web缓存区名称为s3cache,内存缓存空间大小为200MB,硬盘缓存空间大小为10GB # place used to buffer large proxied requests to the fs proxy_temp_path /var/cache/nginx/tmp; # 注:proxy_temp_path和proxy_cache_path指定的路径必须在同一分区 sendfile on; # set client body size to 50M client_max_body_size 50M; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; gzip on; gzip_disable "msie6"; gzip_http_version 1.1; gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript; include /etc/nginx/default.conf; include /etc/nginx/conf.d/*.conf;}
/etc/nginx/conf.d/proxy_cache.conf:
server { listen 80; listen [::]:80; server_tokens off; server_name youdomain.com; error_page 403 404 /custom_404.html; location = /custom_404.html { root /usr/share/nginx/html; internal; } # 实现 / -> /index.html映射 try_files $uri $uri/index.html =404; location / { set $s3_bucket 'youprojectname.s3.amazonaws.com'; # 指定s3cache 缓存区将被使用(通过proxy_cache_path 设置的) proxy_cache s3cache; # cache successful responses for 24 hours proxy_cache_valid 200 302 24h; #对不同的HTTP状态码设置不同的缓存时间 # cache missing responses for 1 minutes proxy_cache_valid 403 404 1m; proxy_cache_key $uri; proxy_redirect off; # need to set the hot to be $backend here so s3 static website hosting service knows what bucket to use # 设置主机头和客户端真实地址 proxy_set_header Host $s3_bucket; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; add_header X-Cache-Status $upstream_cache_status; proxy_hide_header x-amz-id-2; proxy_hide_header x-amz-request-id; proxy_hide_header Set-Cookie; proxy_ignore_headers "Set-Cookie"; proxy_intercept_errors on; resolver 8.8.8.8; resolver_timeout 5s; proxy_pass http://youprojectname.s3.amazonaws.com/relase/; }}
相关指令说明
try_files:
语法:try_files file … uri 或 try_files file … = code
默认值:无
作用域:server location
其作用是按顺序检查文件是否存在,返回第一个找到的文件(路径/uri)或文件夹(结尾加斜线表示为文件夹),如果所有的文件或文件夹都找不到,会进行一个内部重定向到最后一个参数。
需要注意的是,只有最后一个参数可以引起一个内部重定向,之前的参数只设置内部URI的指向。最后一个参数是回退URI且必须存在,即如果最后一个参数是文件,那么这个文件必须存在,否则会出现内部500错误。命名的location也可以使用在最后一个参数中。与rewrite指令不同,如果回退URI不是命名的location那么
try_files
讲解下nginx规范化
所谓规范化,就是先将URI中形如“%XX”的编码字符进行解码,再解析URI中的相对路径“.”和“..”部分, 另外还可能会压缩相邻的两个或多个斜线成为一个斜线,
这也就是如www.xxx.com///index.html 这样的访问也能访问的原因
规范前的url为 www.xxx.com///index.html 保存在
proxy_cache缓存相关指令集
(1)proxy_cache指令 语法: proxy_cache zone_name ;
该指令用于设置哪个缓存区将被使用,zone_name的值为proxy_cache_path指令创建的缓存区的名称.
(2)proxy_cache_path指令, 语法 proxy_cache_path path[levels=number] keys_zone=zone_name:zone_size[inactive=time] [max_size=size];
该指令用于设置缓存文件的存放路径.例:
proxy_cache_path /data0/proxy_cache_dir levels=1:2keys_zone=cache_one:500m inactive=1d max_size=30g ;
path 存放目录
levels 指定该缓存空间有两层hash目录,第一层目录为1个字母,第二层目录为2个字母,保存的文件名会类似/data0/proxy_cache_dir/c/29/XXXXXX ;
keys_zone参数用来为这个缓存区起名.
500m 指内存缓存空间大小为500MB
inactive的1d指如果缓存数据在1天内没有被访问,将被删除
max_size的30g是指硬盘缓存空间为30G
(3)proxy_cache_methods 指令 语法:proxy_cache_methods[GET HEADPOST];
该指令用于设置缓存哪些HTTP方法,默认缓存HTTP GET/HEAD方法,不缓存HTTP POST 方法
(4)proxy_cache_min_uses指令 语法:proxy_cache_min_uses the_number
该指令用于设置缓存的最小使用次数,默认值为1
(5)proxy_cache_valid指令 语法: proxy_cache_valid reply_code[reply_code…] time ;
该指令用于对不同返回状态码的URL设置不同的缓存时间.
例:
proxy_cache_valid 200 302 10m ;
proxy_cache_valid 404 1m ;
设置200,302状态的URL缓存10分钟,404状态的URL缓存1分钟.
(6)proxy_cache_key指令 语法: proxy_cache_key line ;
该指令用来设置Web缓存的Key值,Nginx根据Key值md5哈希存储缓存.一般根据
- 代理s3的nginx缓存服务器配置
- nginx 代理缓存配置
- 使用Nginx反向代理与proxy_cache缓存搭建CDN服务器的配置方法
- Nginx缓存服务器配置
- Nginx反向代理缓存配置
- Nginx反向代理缓存配置
- 【Nginx 配置】反向代理/缓存
- nginx 配置图片缓存服务器,nginx.conf的配置
- 服务器-nginx-方向代理配置
- nginx的反向代理缓存
- nginx的反向代理缓存
- nginx的反向代理缓存
- nginx反向代理的缓存
- FastDFS + Nginx 多服务器完整配置与反向代理缓存等
- Squid反向代理的缓存(加速)服务器配置笔记
- 【Linux】Nginx反向代理/缓存配置
- Nginx服务器的反向代理proxy_pass配置方法讲解
- nginx服务器图片的反向代理和负载均衡配置
- C语言柔性数组分配内存
- GDB
- Java 类中各成分加载顺序 和 内存中的存放位置
- net.sf.json Maven依赖配置
- dubbo架构构成
- 代理s3的nginx缓存服务器配置
- mui list (列表) ipnut (表单)
- 实习随记1
- 实习日志(第四周2)
- 【云栖大会】阿里云李津:持续释放技术红利,为1000万企业提供技术平台
- angular 追加文本框输入的内容
- [Oracle 11g r2(11.2.0.4.0)]集群资源管理
- phpmyadmin 导入数据库 502
- 你确定你真的懂Nginx与PHP的交互?