全站静态资源抓取的ngx_lua方案

554 词

一些方案,没有一一测试: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的静态文件。