Nginx&Redis&Lua
浪游东戴河
专注于SIP/VoIP协议、音视频、Linux C/C++网络编程等领域,长期提供技术咨询、问题解答、软件开发、知识讲座等服务
学无止境,习有所长,没有终点,永不放弃
展开
-
Lua C语言编程存储获取C结构体数据
#include <stdio.h>#include <string.h>#include <stdlib.h>#include <lua5.2/lua.h>#include <lua5.2/lualib.h>#include <lua5.2/lauxlib.h>lua_State* L;typedef ...原创 2018-03-18 15:53:06 · 1389 阅读 · 0 评论 -
Openresty学习(九):Nginx 基于内部变量的HTTP版本检查模块
Nginx内部变量是nginx内部定义的变量,可以表示请求的一些属性,极大的方便了模块的开发和使用配置。 本文使用内部变量,实现一个请求协议检查模块,符合指定协议版本的请求才能访问nginx. 配置: location /hello { default_type text/html; check_version $s...原创 2018-08-24 22:59:55 · 296 阅读 · 0 评论 -
Nginx 基于slab内存实现的客户端访问限制(IP+URL)
本实例来源于《深入理解Nginx》书中的源码。网上未查到可复制使用的源码,因此亲自编译测试并写此博客,定为转载类型,供nginx爱好者学习交流。 测试结果:10秒内第一次访问结果:HelloWorld10秒内第2、3..次访问结果:403 Forbidden 源码:config:http {test_slab 10 10M; #限制10s一次的访问频率,sl...转载 2018-08-12 23:46:39 · 429 阅读 · 0 评论 -
Openresty学习(七):Nginx基础配置及命令行
1. nginx 配置daemon on|off; 是否以守护进程方式运行worker_rlimit_core 10000m;coredump大小限制 working_directory /tmp; //coredump 目录、worker_processes 1; //工作线程数量master_process off;是否以master-work方式运行2.nginx命令行 nginx启动:n...原创 2018-06-26 22:40:04 · 1508 阅读 · 0 评论 -
Openresty学习(八):Nginx配置合并学习
Nginx配置分为main(http配置块)、srv(server配置块)、loc(location配置块)三个级别,各个级别存在合并行为。本文以整数配置为例,介绍一般的合并行为。合并原则:优先级:loc>srv>main>default如果高优先级没有配置,则使用低优先级配置。即优先使用loc, 如果loc没有配置,则使用srv,如果srv没有配置,则使用main;如果都没有配...原创 2018-06-30 19:45:27 · 688 阅读 · 0 评论 -
Openresty学习(六):模块开发:通过Upstream机制访问第三方协议服务器
Upstream机制是nginx中的核心模块之一,基于Upstream模块可以对上游的各种服务器或组件进行访问,如web服务器、memcache、反向代理、数据库和redis访问。正是Upstream模块的支持,使nginx可以异步访问上述组件,保证Nginx的性能。本文实现nginx模块(upstream_oth):基于Upstream访问第三方TCP自定义协议服务器,解析第三方服务器的响应...原创 2018-06-24 19:02:34 · 1128 阅读 · 0 评论 -
Openresty学习(五):nginx作为文件服务器使用
文件上传与下载是web服务器的重要功能。配置nginx文件服务器,支持文件上传和下载功能官网参考资料:http://nginx.org/en/docs/http/ngx_http_autoindex_module.htmllocation / { autoindex on;}http://nginx.org/en/docs/http/ngx_http_dav_module.html编译:...原创 2018-05-27 13:23:46 · 1358 阅读 · 0 评论 -
Openresty学习(四):应答消息体由文件提供
在Openresty学习(三)基础上,修改代码实现应答客户端请求的消息体由文件提供。客户端请求nginx服务器时,一般应答消息体都是上游服务器提供或nginx内存中生成。实际上也可以通过文件提供,即读取文件内容发送给客户端。配置: location /mysql_test{ client_body_in_single_buffer on; ...原创 2018-05-26 13:52:02 · 368 阅读 · 0 评论 -
Openresty学习(三):通过子请求完成redis的访问
在Openresty学习(二)基础上,修改代码支持redis访问(以查询key值为例)。官网参考:http://openresty.org/cn/redis-nginx-module.htmlhttps://github.com/openresty/redis2-nginx-module#redis2_query配置: upstream redisbackend { ...原创 2018-05-13 11:52:47 · 890 阅读 · 0 评论 -
Openresty学习(二):通过子请求完成Mysql的操作(增、删、改、查)
在上一篇文章(Openresty学习一)的基础上,完成mysql的增加、删除、修改、查询操作。配置文件: upstream backend { drizzle_server localhost:3306 dbname=test password=sgy2017 user=root protocol=mysql; driz...原创 2018-05-12 12:40:30 · 1005 阅读 · 0 评论 -
Openresty学习(一):通过子请求和drizzle模块访问mysql数据库来响应客户端请求
Subrequest是由HTTP框架提供的一种分解复杂请求的设计模式,它可以把原始请求分解为许多子请求,由多个子请求协同完成一个用户请求。原理:子请求使用upstream机制访问上游服务器,由父请求根据上游响应重新构响应造返回下游客户端。主要流程如下:1. 在nginx.conf配置文件中配置子请求处理方式2.构造子请求并启动3. 子请求执行结束处理4. 父请求被激活时处理在学习过程中发现,网上关...原创 2018-05-01 14:49:55 · 803 阅读 · 0 评论 -
Openresty学习(十):Nginx内部变量的增加和使用
在Openresty学习(九)基础上,定义新的内部变量my_method(表示请求的方法),增加对请求方法的检查。 配置: location /hello { default_type text/html; check_version $server_protocol HTTP/1.1 $my_method GET; ...原创 2018-09-01 18:32:11 · 1700 阅读 · 0 评论