全站静态资源抓取的ngx_lua方案
一些方案,没有一一测试:SiteSucker、httrack、idm、nomder、webzip、Teleport Pro、wget
webzip有乱码问题,?和后面一个英文字符被合成了一个中文乱码,原因不明,最终采用的是wget的方案:
wget -e robots=off -w 1 -x -np -p -m -k -t 1 -X/upload/ http://domain
简洁地把整站抓了下来。
接着的问题是,静态资源的名字是:xxxx.asp?a=zzzz&b=qqqq 这种形式的,在nginx里直接访问的话会去寻找xxxx.asp,原因是?是个url关键字(URL reserved characters),需要采取一些措施来规避,方案是HttpLluaModule,在nginx的rewrite阶段执行:
rewrite_by_lua ‘
if string.find(ngx.var.uri,”.asp”)~=nil then
if ngx.var.args~=nil then
ngx.req.set_uri(ngx.var.uri..”?”..ngx.var.args)
else
ngx.req.set_uri(ngx.var.uri)
end
end
‘;
这样就成功访问了文件名为xxxx.asp?a=zzzz&b=qqqq的静态文件。