在微信公众平台开发中,最基本的一个问题是文件验证。这个文件一般以.txt结尾,这个文件的里面是一个字符串,一般在开发微信时,需要在自己的服务器根目录下放入这个文件。
根据项目的需要,我们需要把这个文件存入数据库,然后让程序直接通过数据库来验证,具体做法是利用ngxin,
具体如下:
首先在中,加入一个变量,这个变量是解惑uri中的文件名。例如/a/ 则能获取到,然后把这个变量 传递给某个controller,controller获取这个变量的名字,去数据库搜索。然后输出内容。
map $uri $basename {
~/(?<captured_basename>[^/]*)$ $captured_basename;
}
注意,这个map需要nginx开启mapmodule,这个一般最新的nginx都有。同时,这个代码需要些在全局中的http块中。也就是中。
到了具体的server时,想要获取这个变量:
location ~ \.txt$ {
if ( $basename ~ (([\S\s]*).txt) ){
set $file_name $2;
#proxy_pass http://127.0.0.1:8090/yun/weChatTicket/verify?ticket_file=$file_name;
proxy_pass http://127.0.0.1:9290/yun/weChatTicket/verify?ticket_file=$basename;
break;
}
return 502 '{"status":502,"msg":$uri $basename $file_name}';
}
这里$file_name是不带后缀结尾的。$basename是带后缀结尾的。