server { listen 80; index index.php index.html index.htm; set $root_path '/var/www'; root $root_path; location /lua { default_type 'text/plain'; content_by_lua 'ngx.say("hello, ttlsa lua")'; } location / { try_files $uri $uri/ /index.php?$args; # add support for img which has query params, # like: xxx.jpg?a=b&c=d_750x750.jpg if ($args ~* "^([^_]+)_(\d+)+x(\d+)+\.(jpg|jpeg|gif|png)$") { set $w $2; set $h $3; set $img_ext $4; # rewrite ^\?(.*)$ _${w}x${h}.$img_ext? last; rewrite ([^.]*).(jpg|jpeg|png|gif)$ $1.$2_${w}x${h}.$img_ext? permanent; } } # set var for thumb pic set $upload_path /opt/uploads; set $img_original_root $upload_path;# original root; set $img_thumbnail_root $upload_path/cache/thumb; set $img_file $img_thumbnail_root$uri; # like:/xx/xx/xx.jpg_100-.jpg or /xx/xx/xx.jpg_-100.jpg location ~* ^(.+\.(jpg|jpeg|gif|png))_((\d+\-)|(\-\d+))\.(jpg|jpeg|gif|png)$ { root $img_thumbnail_root; # root path for croped img set $img_size $3; if (!-f $img_file) { # if file not exists add_header X-Powered-By 'Nginx+Lua+GraphicsMagick By Yanue'; # header for test add_header file-path $request_filename; # header for test set $request_filepath $img_original_root$1; # origin_img full path:/document_root/1.gif set $img_size $3; # img width or height size depends on uri set $img_ext $2; # file ext content_by_lua_file /etc/nginx/lua/autoSize.lua; # load lua } } # like: /xx/xx/xx.jpg_100x100.jpg location ~* ^(.+\.(jpg|jpeg|gif|png))_(\d+)+x(\d+)+\.(jpg|jpeg|gif|png)$ { root $img_thumbnail_root; # root path for croped img if (!-f $img_file) { # if file not exists add_header X-Powered-By 'Nginx+Lua+GraphicsMagick By Yanue'; # header for test add_header file-path $request_filename; # header for test set $request_filepath $img_original_root$1; # origin_img file path set $img_width $3; # img width set $img_height $4; # height set $img_ext $5; # file ext content_by_lua_file /etc/nginx/lua/cropSize.lua; # load lua } } # if need (all go there) location ^~ /uploads { root $img_original_root; } location ~ /\.ht { deny all; } }