使用nginx lua已经两三个月了,项目接开发完毕了,这几天准备上线并且跟高德地图对接。回顾下来lua在项目中占得必中还是比较大的,跟PHP的占比差不多持平了,因此在开发中遇到一些问题备忘一下
1:content_by_lua中代码容量有限制,一般不要写太多代码,正常编写代码一般在100行左右(具体容量没有细心测哈哈,在4kb左右),如果超出了则重启nginx的时候会报too long parameters
2:如果引入lua脚本文件也得控制一下lua脚本中函数里面代码的容量,不要太多呵呵
3:编写lua代码时一定得健壮,不然nginx虽然可以重启但是经常会导致500错误,比如参数的判断,使用一些未定义的变量(当然lua中是可以的,但是现在是在nginx环境中,情况有些不一样)
4:nginx_lua中不支持使用"..."的不限制参数模式的函数参数
5:content_by_lua中的代码一定要注意单引号或者双引号,引号和content_by_lua之间要有空格
5:content_by_lua中的代码一定要注意单引号或者双引号,引号和content_by_lua之间要有空格
6:在content_by_lua中如果使用正则(string.match,string.gmatch)的时候如果content_by_lua后面用如果单引号引起来lua代码的话,正则里面单引号要用"\"进行转移而不是"%"转义符
以上描述可能绕口,直接贴代码
content_by_lua '
local res = ngx.location.capture("/pass_get",{
...
local ids = string.gmatch( h,"show_surveil_detail%S\'(%d+)\',\'(%d+)\',\'0\'%S" );
';
7:在nginx_lua中nil的变量跟数字相加是不允许的,nginx会报500错误的.
8:经常在写lua脚本的时候有时nginx的reload不起作用,导致新写的nginx配置不生效,可以在reload之前nginx -t检查一下看那里报错
9:在使用共享内存api的时候一定要注意如:使用lua_shared_dict、ngx.shared.DICT的时候最好不要使用get_keys,否则指不定那次获取比较多的数据的时候共享内存被锁定,严重时可能导致nginx阻塞
10:在ngx_lua中数字类型跟字符类型的数字进行运算时会报错的,必须将两者都统一成数字类型的,如
local a=123;local b="333";
a+b(错误)
a+(b+0)这样就可以了
字符类型的数字加上0可以转换成数字类型的
相关推荐
#### 知识点四:Nginx+Lua开发环境的搭建流程 - **准备工作**:首先,需要确保操作系统中已经安装了必要的依赖库,如`libreadline-dev`、`libncurses5-dev`、`libpcre3-dev`和`libssl-dev`等。 - **安装步骤**: ...
- **选择合适的编程语言**:虽然Nginx主要是用C语言编写的,但也可以使用其他语言(如Lua)来开发模块并通过接口与Nginx交互。 - **测试与调试**:确保新模块的功能正确无误,并对其进行压力测试以验证性能表现。 ...
总结起来,OpenResty是Nginx与Lua结合的产物,它在十年的开源历程中,已经成为Web服务开发的重要工具。从最初的扩展Nginx,到如今的广泛应用,OpenResty的成功在于其强大的技术实力、丰富的生态系统和活跃的社区。...
20.3.8 Nginx+Lua逻辑开发 401 21 使用OpenResty开发商品详情页 405 21.1 技术选型 407 21.2 核心流程 408 21.3 项目搭建 408 21.4 数据存储实现 410 21.4.1 商品基本信息SSDB集群配置 410 21.4.2 商品介绍SSDB集群...
为解决这些问题,企业需要投入时间和资源进行技术培训,建立完善的开发和运维流程,并充分利用社区资源进行问题排查和经验交流。 总结,OpenResty在教育行业的应用,通过其高性能、灵活性和易扩展性,为教育平台...
通过项目方式讲解WAF产品建设,可以从需求分析、方案设计、技术实现、功能扩展、运营后台和经验总结等几个维度来展开。 需求分析是任何产品建设的起点,对于WAF产品而言,需求不仅仅体现在基础的WEB安全防御上,...
- 经验丰富的Nginx、Apache和Tomcat服务器管理员,能有效管理和优化服务性能。 - 熟悉Kingshard、Mycat、Twemproxy和Codis等数据库中间件,用于分布式数据库管理。 10. **监控与运维**: - 使用EKL、Zabbix监控...
- **Nginx + Lua**:负责渲染页面,将从Golang计算服务获得的JSON数据呈现在前端。 - **ConfigCenter**:作为协调中心,管理Worker、Lua服务及Golang计算服务。 - **ScoreWorker、DataWorker**:离线异步计算数据的...
首先,这位程序员具备5年的Java开发经验,特别是在大型系统架构设计上拥有3年以上经验,并有3年的团队管理经历。他参与设计和研发的手机生活服务平台注册用户达到1.5亿,日活跃用户300万,日访问量超过1亿次,这显示...