关于openresty的一些介绍看这里。
首先,实验背景为openresty作为后台来处理前台post传递的数据。
在openresty内,有一个FormInputNginxModule模块,作用是解析post请求中的参数。
如果要使用该模块,需要在编译openresty源码时,在"./configure"一步添加参数:
./configure --add-module=/somepath/form-input-nginx-module --add-module=/somepath/ngx_devel_kit
在这里可以查看到FormInputNginxModule模块的说明。
我们需要获取post请求中的数据,所以这里用到FormInputNginxModule模块的下面这个命令:
set_form_input $variable argument;
于是,我们有post请求:
var json = {
data: "Hello!"
};
$.post(
'save',
json,
function(callback){
alert(callback);
}
);
其中function用以输出后台返回的数据。
接着,我们有nginx配置文件nginx.conf:
user root;
worker_processes ; error_log logs/error.log;
pid logs/nginx.pid; events {
worker_connections ;
# multi_accept on;
} http {
include mime.types; access_log logs/access.log; server {
listen ;
server_name localhost; location / {
root /var/www/aceEditor;
index index.htm index.html;
} location /save {
set_form_input $data data;
echo $data;
}
}
}
这样,当前台post数据时,就会触发nginx的/save块,于是通过FormInputNginxModule模块的set_form_input指令将post的data数据set给了变量$data,然后我们就可以处理获取的变量。在这个实验中,使用echo向前台返回数据。
于是,前台点击post后,会弹出响应:
到这里,一个完整的post过程就完成了。
随后,在post提交的json中传递的参数,都可以用FormInputNginxModule模块的set_form_input指令来获取,这样,后台就取到了前天传递的数据,接着结合lua,继续更多的操作。