详细配置步骤:
lua+nginx+GraphicsMagick 

环境: CentOSsh5.4_x64.iso 
虚拟机: Vmware9.0

yum install readline-devel pcre-devel openssl-devel 

 cd /opt/Source 

wget http://agentzh.org/misc/nginx/ngx_openresty-1.0.15.10.tar.gz 

 useradd -r www 

 tar vxzf ngx_openresty-1.0.15.10.tar.gz  

 cd ngx_openresty-1.0.15.10 

 ./configure --user=www --group=www --prefix=/usr/local/openresty \ 

   
   
   
   
   
   
 --with-luajit \ 

   
   
   
   
   
   
 --without-http_redis2_module \ 

   
   
   
   
   
   
 --with-http_iconv_module


make -j4   # -j后面的cpu核心数,如果是多核可以写相应的个数
make install
 
  安装jpg环境:

tar xf libjpeg-6b.tar.gz
./configure 
make && make install 

tar xf libpng-1.4.7.tar.gz
./configure
make && make install 
注意: 64位系统需要拷贝
cp /usr/local/lib/libpng14.so.14 /lib64/   或者做软连接,不然执行gm命令的时候会报错!

cd   
/opt/Source  

 wget http://downloads.sourceforge.net/project/graphicsmagick/graphicsmagick/1.3.16/GraphicsMagick-1.3.16.tar.gz 

 tar vxzf GraphicsMagick-1.3.16.tar.gz  

 cd GraphicsMagick-1.3.16 

 ./configure 

 make&& make install 


配置nginx nginx.conf 

 #user   
nobody; 

 worker_processes   
1; 

 #error_log   
logs/error.log; 

 #error_log   
logs/error.log   
notice; 

 #error_log   
logs/error.log   
info; 

 #pid   
   
   
   
logs/nginx.pid; 

 events { 

   
   
 worker_connections   
1024; 

 } 

 http { 

   
   
 include   
   
   
 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   
logs/access.log   
main; 



   
   
 sendfile   
   
   
   
on; 

   
   
 #tcp_nopush   
   
 on; 



   
   
 #keepalive_timeout   
0; 

   
   
 keepalive_timeout   
65; 



   
   
 #gzip   
on; 



   
   
 server { 

   
   
   
   
 listen   
   
   
 80; 

   
   
   
   
 server_name   
localhost; 



   
   
   
   
 #charset koi8-r; 



   
   
   
   
 #access_log   
logs/host.access.log   
main; 



   
   
   
   
 location / { 

   
   
   
   
   
   
 root   
 html; 

   
   
   
   
   
   
 index   
index.html index.htm; 

   
   
   
   
 } 

 location /lua1 { 

   
 default_type 'text/plain'; 

   
   
   
   
   
   
   
   
   
   
rewrite_by_lua 'ngx.say("hello, lua")'; 

   
   
   
   
   
   
   
   
 } 

 location /upload/   
{ 

   
   
   
   
   
   
   
   
 set $image_root /usr/local/openresty/nginx/html; 

   
   
   
   
   
   
   
   
 set $file "$image_root$uri"; 

   
   
   
   
   
   
   
   
 if (!-f $file) { 

   
   
   
   
   
   
   
   
   
   
   
   
 rewrite_by_lua ' 

   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
 local index = string.find(ngx.var.uri, "([0-9]+)x([0-9]+)"); 

   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
 if (index == nil) then 

   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
ngx.exit(404);end; 

   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
 local originalUri = string.sub(ngx.var.uri, 0, index-2); 

   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
 local area = string.sub(ngx.var.uri, index); 

   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
 index = string.find(area, "([.])"); 

   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
 area = string.sub(area, 0, index-1); 

   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
 local image_sizes = {"160x160","400x300"}; 

   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
 local image_big = {"80x60^", "120x90^", "160x120^"}; 

   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
 function table.contains(table, element) 

   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
 for _, value in pairs(table) do 

   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
 if value == element then 

   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
 return true 

   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
 end 

   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
 end 

   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
 return false 

   
   
   
   
   
   
   
   
   
   
   
   
 end 

   
   
   
   
   
   
   
   
 print(table.contains(image_big, area)) 

   
   
   
   
   
   
   
   
 if table.contains(image_big, area) then 

   
   
   
   
   
   
   
   
   
   
   
   
 local command = "gm convert " .. ngx.var.image_root ..   
originalUri   
.. " -thumbnail " .. area .. " -background gray -gravity center -extent " .. area .. " " .. ngx.var.image_root .. ngx.var.uri 

   
   
   
   
   
   
   
   
   
   
   
   
 os.execute(command); 

   
   
   
   
   
   
   
   
 else 

   
   
   
   
   
   
   
   
   
   
   
   
 if table.contains(image_sizes, area) then 

   
   
   
   
   
   
   
   
   
   
   
   
 local command = "gm convert " .. ngx.var.image_root ..   
originalUri   
.. " -thumbnail "   
.. area .. " " .. ngx.var.image_root .. ngx.var.uri; 

   
   
   
   
   
   
   
   
   
   
   
   
 os.execute(command); 

   
   
   
   
   
   
   
   
   
   
   
   
 else 

   
   
   
   
   
   
   
   
   
   
   
   
 ngx.exit(404); 

   
   
   
   
   
   
   
   
   
   
   
   
 end; 

   
   
   
   
   
   
   
   
 end; 

   
   
   
   
   
   
   
   
 '; 

   
   
   
   
 } 

   
   
   
   
 } 

 #error_page   
404   
   
   
   
   
   
   
/404.html; 



   
   
   
   
 # redirect server error pages to the static page /50x.html 

   
   
   
   
 # 

   
   
   
   
 error_page   
 500 502 503 504   
/50x.html; 

   
   
   
   
 location = /50x.html { 

   
   
   
   
   
   
 root   
 html; 

   
   
   
   
 } 



   
   
   
   
 # proxy the PHP scripts to Apache listening on 127.0.0.1:80 

   
   
   
   
 # 

   
   
   
   
 #location ~ \.php$ { 

   
   
   
   
 #   
   
proxy_pass   
 http://127.0.0.1; 

   
   
   
   
 #} 



   
   
   
   
 # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 

   
   
   
   
 # 

   
   
   
   
 #location ~ \.php$ { 

   
   
   
   
 #   
   
root   
   
   
   
   
 html; 

   
   
   
   
 #   
   
fastcgi_pass   
 127.0.0.1:9000; 

   
   
   
   
 #   
   
fastcgi_index   
index.php; 

   
   
   
   
 #   
   
fastcgi_param   
SCRIPT_FILENAME   
/scripts$fastcgi_script_name; 

   
   
   
   
 #   
   
include   
   
   
   
fastcgi_params; 

   
   
   
   
 #} 



   
   
   
   
 # deny access to .htaccess files, if Apache's document root 

   
   
   
   
 # concurs with nginx's one 

   
   
   
   
 # 

   
   
   
   
 #location ~ /\.ht { 

   
   
   
   
 #   
   
deny   
all; 

   
   
   
   
 #} 

   
   
 } 





   
   
 # another virtual host using mix of IP-, name-, and port-based configuration 

   
   
 # 

   
   
 #server { 

   
   
 #   
   
listen   
   
   
 8000; 

   
   
 #   
   
listen   
   
   
 somename:8080; 

   
   
 #   
   
server_name   
somename   
alias   
another.alias; 

   
   
#   
   
location / { 

   
   
 #   
   
   
   
root   
 html; 

   
   
 #   
   
   
   
index   
index.html index.htm; 

   
   
 #   
   
} 

   
   
 #} 





   
   
 # HTTPS server 

   
   
 # 

   
   
 #server { 

   
   
 #   
   
listen   
   
   
 443; 

   
   
 #   
   
server_name   
localhost; 



   
   
 #   
   
ssl   
   
   
   
   
   
   
   
   
on; 

   
   
 #   
   
ssl_certificate   
   
   
cert.pem; 

   
   
 #   
   
ssl_certificate_key   
cert.key; 



   
   
 #   
   
ssl_session_timeout   
5m; 



   
   
 #   
   
ssl_protocols   
SSLv2 SSLv3 TLSv1; 

   
   
 #   
   
ssl_ciphers   
HIGH:!aNULL:!MD5; 

   
   
 #   
   
ssl_prefer_server_ciphers   
 on; 



   
   
 #   
   
location / { 

   
   
 #   
   
   
   
root   
 html; 

   
   
 #   
   
   
   
index   
index.html index.htm; 

   
   
 #   
   
} 

   
   
 #} 



 }




注意: 要建立路径
mkdir /usr/local/openresty/nginx/html/upload


给定写权限:
chmod o+w /usr/local/openresty/nginx/html/upload


拷贝测试图片:
cp test.jpg   /usr/local/openresty/nginx/html/upload/test.jpg


测试nginx语法:
/usr/local/openresty/nginx/sbin/nginx   -t


启动nginx
/usr/local/openresty/nginx/sbin/nginx  
netstat -tunlp |grep :80




客户端浏览器测试:
http://Server_ip/upload/test.jpg   : 查看原图
http://Server_ip/upload/test.jpg.160x160.jpg   :查看缩放图




注意事项:
本文档关闭了selinux ,同时放行了80端口。


配置有问题可以查看nginx的错误日志文件!
tail -f /usr/local/openresty/nginx/logs/error.log