Newer
Older
proxy_cache_path /tmp/nginx-uc-cache levels=1:2 keys_zone=uc-cache:10m max_size=10g inactive=300s;
log_format cache '$remote_addr - $host [$time_local] "$request" $status '
'$body_bytes_sent "$http_referer" '
'rt=$request_time ut="$upstream_response_time" '
'cs=$upstream_cache_status';
listen 80 default_server;
listen 443 default_server ssl;
server_name {{ server_name }};
root /var/www/cache/;
access_log /var/log/nginx/access_cache.log cache;
error_log /var/log/nginx/error_cache.log;
location /.well-known/acme-challenge {
default_type "text/plain";
root /tmp/letsencrypt;
}
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
location /crossdomain {
}
location /streaming/ {
# Live; expiration headers are defined by upstream (nginx/wowza)
rewrite ^/(.*)$ /$1? break;
proxy_pass {{ source_server }};
proxy_cache uc-cache;
# do not consider secure urls as new files
proxy_cache_key $scheme$proxy_host$uri;
# only one request at a time will be allowed to populate a new cache element
proxy_cache_lock on;
# hide upstream X-Cache header
proxy_hide_header X-Cache;
# add own X-Cache header
add_header X-Cache $upstream_cache_status;
}
location /resources/ {
# VOD
location ~ \.(m3u8|ts|mp4|mp3|webm|oga|ogv|ogg|mov|flv)$ {
rewrite ^/(.*)$ /$1? break;
proxy_pass {{ source_server }};
proxy_cache uc-cache;
# do not consider secure urls as new files
proxy_cache_key $scheme$proxy_host$uri;
# only one request at a time will be allowed to populate a new cache element
proxy_cache_lock on;
# how long should the data be kept in the cache
proxy_cache_valid 200 7d;
# instruct browser to cache this
expires 7d;
# headers
proxy_ignore_headers "Cache-Control" "X-Accel-Expires" "Expires";
add_header X-Cache $upstream_cache_status;
}
}
location / {
# only urls to video and audio files are allowed, discard any requested path for other urls
rewrite ^/(.*)$ /index.html? break;
}