openresty中使用lua-nginx创建socket实例
Lua语言太强大了,至少我是这样觉得的。原始的Lua没有Socket功能,需要使用者下载Lua socket组件,require一下才行。而lua-nginx模块自带了socket功能,而且是100%的非阻塞模式,再次感谢作者章亦春。
使用socket功能很简单,只有几个简单的方法即可主要就是有TCP和UDP的区别。(这里只是lua文件,其他请见Hello world 文章)
local sock = ngx.socket.tcp()
local ok,err = sock:connect('whois.cnnic.net.cn',43)
if not ok then
ngx.say('Failed to connect whois server',err)
return
end
sock:settimeout(5000)
local ok, err = sock:send("baidu.cn\r\n")
if not ok then
ngx.say('Failed to send data to whois server', err)
return
end
local line, err, partial = sock:receive('*a')
if not line then
ngx.say('Failed to read a line', err)
return
end
ngx.print(line)
完美运行:
相关推荐
-
Nginx+Lua+Redis构建高并发Web应用
本文介绍如何用Nginx+Lua+Redis来构建高并发Web应用,Curl请求Nginx,Nginx通过Lua查询Redis,返回json数据. 一.安装1.安装lua-redis-parser 复制代码 代码如下: #git clone https://github.com/agentzh/lua-redis-parser.git #export LUA_INCLUDE_DIR=/usr/include/lua5.1 #make CC=gcc #make install CC=gcc 2.安
-
Lua和Nginx结合使用的超级指南
Nginx作为API代理 有很多原因说明你为什使用nginx作为API代理.首先因为他是开源的:其次,Nginx有大量的安装基础,他背后有一个强大的社区支持,在性能方面也表现的非常出色.对于我们来说,这是显而易见的,如果开源软件有相同的解决方案我们为啥还要用那些私有的软件. 另外一个极大的优势就是nginx对lua的支持,nginx+lua是一个非常好的组合,它允许使用一个高性能的脚本语言扩展nginx.nginx有很多方法是自带的,但是使用lua没有限制的. 原理很简单.有没有这样的情况你更
-
linux系统安装Nginx Lua环境
亦可参考官方安装指南: lua-nginx-module Installation 这是我总结的安装,供参考: 需要最新版的Nginx,LuaJIT,ngx_devel_kit,lua-nginx-module等安装文件: Nginx LuaJIT Lua或者LuaJIT都是可以的,但是出于性能的考虑,推荐安装LuaJIT ngx_devel_kit lua-nginx-module 参考命令下载: $ curl -O http://nginx.org/download/nginx-1.10.1
-
nginx中使用lua脚本的方法
Lua是一种跟JavaScript很像的语言,Ngix_Lua同样使用异步单线程,语法甚至比JS更加简单,之前的评测指出,Ngix_lua的性能几乎是Node.JS的一倍. Nginx 特点 1.流行的高性能HTTP服务器 2.事件驱动(异步)架构 3.少量且可测内存占用 4.声明性配置语言 5.基于C的可扩展模块 通过lua-nginx-module即可在nginx上启动lua脚本. 一个例子: 复制代码 代码如下: location / { content_by_lua '
-
安装Nginx+Lua开发环境
首先我们选择使用OpenResty,其是由Nginx核心加很多第三方模块组成,其最大的亮点是默认集成了Lua开发环境,使得Nginx可以作为一个Web Server使用.借助于Nginx的事件驱动模型和非阻塞IO,可以实现高性能的Web应用程序.而且OpenResty提供了大量组件如Mysql.Redis.Memcached等等,使在Nginx上开发Web应用更方便更简单.目前在京东如实时价格.秒杀.动态服务.单品页.列表页等都在使用Nginx+Lua架构,其他公司如淘宝.去哪儿网等. 安装环境
-
使用nginx+lua实现信息访问量统计
根据URI参数后去信息类型和信息ID,通过lua client for memcached插入memcached 复制代码 代码如下: require('Memcached') local args = ngx.req.get_uri_args() if (ngx.var.remote_addr == '192.168.1.5') then local key = args['k'] local class = args['c'] local
-
openresty中使用lua-nginx创建socket实例
Lua语言太强大了,至少我是这样觉得的.原始的Lua没有Socket功能,需要使用者下载Lua socket组件,require一下才行.而lua-nginx模块自带了socket功能,而且是100%的非阻塞模式,再次感谢作者章亦春. 使用socket功能很简单,只有几个简单的方法即可主要就是有TCP和UDP的区别.(这里只是lua文件,其他请见Hello world 文章) 复制代码 代码如下: local sock = ngx.socket.tcp() local ok,err = sock
-
Nginx中使用Lua脚本与图片的缩略图处理的实现
目录 环境搭建 Ubuntu 16.04 Ubuntu 18.04 图片缩略图 环境搭建 Ubuntu 16.04 安装环境的脚本 #!/bin/bash apt-get update apt-get install gcc g++ make wget openssl libssl-dev vim bzip2 -y tar xzvf LuaJIT-2.0.4.tar.gz cd LuaJIT-2.0.4 make install PREFIX=/usr/local/luajit echo 'ex
-
Python中动态创建类实例的方法
简介 在Java中我们可以通过反射来根据类名创建类实例,那么在Python我们怎么实现类似功能呢? 其实在Python有一个builtin函数import,我们可以使用这个函数来在运行时动态加载一些模块.如下: def createInstance(module_name, class_name, *args, **kwargs): module_meta = __import__(module_name, globals(), locals(), [class_name]) class_met
-
Openresty服务器使用lua脚本写的Hello World简单实例
Openresty提供了丰富的接口和变量给Lua,开发者可以充分利用Lua语言特性和这些接口进行高效率开发.万事开头难,但是对于编程来说能写出Hello world就已经算是成功一半了. 1.安装openresty 2.配置nginx 复制代码 代码如下: server { listen 80; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main
-
JavaScript中的observables 操作符创建实例
目录 一.创建实例 1.create 2.empty 3.from 4.of 5.fromEvent 6.fromPromise 7.interval 8.timer 操作符是 observables 背后的马力,为复杂的异步任务提供了一种优雅的声明式解决方案. 本篇就带领大家 “粗略” 过一下 observable 创建实例的重点 API 都有哪些?以及用代码片段展示出用法示意~ 一.创建实例 1.create cre
-
oracle中dblink查看、创建、使用以及删除实例代码
目录 一.查看dblink 二.创建dblink 三.删除dblink 补充:DBLink 的使用查询 总结 一.查看dblink --查看全部用户 SELECT OWNER,OBJECT_NAME FROM DBA_OBJECTS WHERE OBJECT_TYPE='DATABASE LINK'; --查看全部用户 SELECT * FROM DBA_DB_LINKS; --查看本用户 SELECT * FROM USER_DB_LINKS; 二.创建dblink 1.如果没有权限的话给权限
-
python+pandas分析nginx日志的实例
需求 通过分析nginx访问日志,获取每个接口响应时间最大值.最小值.平均值及访问量. 实现原理 将nginx日志uriuriupstream_response_time字段存放到pandas的dataframe中,然后通过分组.数据统计功能实现. 实现 1.准备工作 #创建日志目录,用于存放日志 mkdir /home/test/python/log/log #创建文件,用于存放从nginx日志中提取的$uri $upstream_response_time字段 touch /home/tes
-
golang中sync.Map并发创建、读取问题实战记录
背景: 我们有一个用go做的项目,其中用到了zmq4进行通信,一个简单的rpc过程,早期远端是使用一个map去做ip和具体socket的映射. 问题 大概是这样 struct SocketMap { sync.Mutex sockets map[string]*zmq4.Socket } 然后调用的时候的代码大概就是这样的: func (pushList *SocketMap) push(ip string, data []byte) { pushList.Lock() defer pushLi
-
python单例模式原理与创建方法实例分析
本文实例讲述了python单例模式原理与创建方法.分享给大家供大家参考,具体如下: 1. 单例是什么 举个常见的单例模式例子,我们日常使用的电脑上都有一个回收站,在整个操作系统中,回收站只能有一个实例,整个系统都使用这个唯一的实例,而且回收站自行提供自己的实例.因此回收站是单例模式的应用. 确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类称为单例类,单例模式是一种对象创建型模式. 2. 创建单例-保证只有1个对象 # 实例化一个单例 class Singleton(obj
-
如何在C#中集成Lua脚本
背景 在很多时候我们代码中的一些逻辑操作并不能够硬编码到代码中,我们可能希望通过配置来完成这个操作,所以这个时候我们就需要有一些脚本语言能够处理这些操作,在C#语言中比较常见的就是通过引入NLua这个动态库来引入lua脚本语言从而达到灵活配置的目的,这篇文章主要是通过具体的实例来说明在C#中如何通过引入NLua并调用配置的脚本. 步骤 1 引入NLua.dll 这个dll是一个很轻量级的库,100kb左右,引用这个库可以通过Nuget包管理器来引用,当前引用的版本是1.5.7.0,我们看看引用之
随机推荐
- 把Lua函数传递到C/C++中实例
- Java中增强for循环在一维数组和二维数组中的使用方法
- 基于JAVA的短信验证码api调用代码实例
- Java实现文件批量重命名具体实例
- Python爬取读者并制作成PDF
- JS生成不重复随机数组的函数代码
- php数据结构 算法(PHP描述) 简单选择排序 simple selection sort
- php去除字符串中空字符的常用方法小结
- 用jquery仿做发微博功能示例
- WinForm实现状态栏跑马灯效果的方法示例
- Python 含参构造函数实例详解
- Linux上通过binlog文件恢复mysql数据库详细步骤
- 详解Oracle修改字段类型方法总结
- 非常不错的页面特效 建议大家看下
- Android Animation之TranslateAnimation(平移动画)
- php把大写命名转换成下划线分割命名
- python通过exifread模块获得图片exif信息的方法
- 简单了解什么是神经网络
- ThinkPHP5 的简单搭建和使用详解
- 基于Vue插入视频的2种方法小结