Feel free to change this path of course (and keys_zone value as well, but also change the usage of it below).
proxy_cache_path /var/www/cache/resized levels=1:2 keys_zone=resizedimages:10m max_size=1G;
Gzip was on in another conf file of mine…You may need to uncomment the next line.
gzip on;
gzip_disable msie6; gzip_static on; gzip_comp_level 4; gzip_proxied any;
Again, be careful that you aren’t overwriting some other setting from another config’s http {} section.
gzip_types image/jpeg image/jpg image/png image/gif;
server {
Replace with your sub/domain.
server_name image.yoursite.com; root /var/www/cache/store/img; index index.html;
resolver 8.8.8.8 8.8.4.4;
This requests the original file from itself and then resizes the image.
location ~ ^/resize/(\d+)x(\d+)/(.*) {
Again replace with your sub/domain.
proxy_pass http://image.yoursite.com/$3;
proxy_cache resizedimages; proxy_cache_key “$host$document_uri”; proxy_cache_valid 200 1d; proxy_cache_valid any 1m; proxy_cache_use_stale error timeout invalid_header updating;
image_filter resize $1 $2; image_filter_jpeg_quality 90; image_filter_buffer 20M; image_filter_interlace on; }
Access denied.
location /resize { return 403; }
RESIZED: http://image.yoursite.com/200×200/example.jpg
location ~ /(\d+x\d+/.*) { try_files /$1 @img; }
ORIGINAL: http://image.yoursite.com/example.jpg
location / {
If we don’t find the file locally download it.
error_page 404 = @proxy; }
This saves the resized image locally.
location @img { set $remote_uri $uri; set $protocol “http”; if ($uri ~ “^/https?\:\/(.)”) { set $remote_uri $1; } if ($uri ~ “^/https.“) { set $protocol “https”; } set $full_uri “${protocol}://${remote_uri}”;
proxy_pass $full_uri; proxy_store /var/www/cache/store/img/$full_uri; }
This gets the remote image and saves it locally.
location @proxy {
set $remote_uri $uri; set $protocol “http”; if ($uri ~ “^/https?\:\/(.)”) { set $remote_uri $1; } if ($uri ~ “^/https.“) { set $protocol “https”; } set $full_uri “${protocol}://${remote_uri}”;
i thought with merge_slashes off this would work… =(
if ($uri ~ “^/(.*)”) {
set $full_uri $1;
}
set $full_uri $uri;
proxy_pass $full_uri; proxy_connect_timeout 30s; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_store /var/www/cache/store/img$uri; }
}