关于openresty的一些介绍看这里。html
首先,实验背景为openresty做为后台来处理前台post传递的数据。nginx
在openresty内,有一个FormInputNginxModule模块,做用是解析post请求中的参数。git
若是要使用该模块,须要在编译openresty源码时,在"./configure"一步添加参数:github
./configure --add-module=/somepath/form-input-nginx-module --add-module=/somepath/ngx_devel_kit
在这里能够查看到FormInputNginxModule模块的说明。json
咱们须要获取post请求中的数据,因此这里用到FormInputNginxModule模块的下面这个命令:post
set_form_input $variable argument;
因而,咱们有post请求:lua
1 var json = { 2 data: "Hello!" 3 }; 4 $.post( 5 'save', 6 json, 7 function(callback){ 8 alert(callback); 9 } 10 );
其中function用以输出后台返回的数据。spa
接着,咱们有nginx配置文件nginx.conf:3d
1 user root; 2 worker_processes 2; 3 4 error_log logs/error.log; 5 pid logs/nginx.pid; 6 7 events { 8 worker_connections 1024; 9 # multi_accept on; 10 } 11 12 http { 13 include mime.types; 14 15 access_log logs/access.log; 16 17 server { 18 listen 80; 19 server_name localhost; 20 21 location / { 22 root /var/www/aceEditor; 23 index index.htm index.html; 24 } 25 26 location /save { 27 set_form_input $data data; 28 echo $data; 29 } 30 } 31 }
这样,当前台post数据时,就会触发nginx的/save块,因而经过FormInputNginxModule模块的set_form_input指令将post的data数据set给了变量$data,而后咱们就能够处理获取的变量。在这个实验中,使用echo向前台返回数据。rest
因而,前台点击post后,会弹出响应:
到这里,一个完整的post过程就完成了。
随后,在post提交的json中传递的参数,均可以用FormInputNginxModule模块的set_form_input指令来获取,这样,后台就取到了前天传递的数据,接着结合lua,继续更多的操做。