前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >OpenResty实战系列 | Lua脚本开发 Hello World

OpenResty实战系列 | Lua脚本开发 Hello World

作者头像
Tinywan
发布2024-07-16 14:59:08
770
发布2024-07-16 14:59:08
举报
文章被收录于专栏:开源技术小栈

[上一篇] OpenResty实战系列 | 入门介绍及安装

概述

为了方便开发,我们在本地配置一个虚拟访问域名:http://openresty.tinywan.com

/usr/local/openresty/nginx/conf目录下创建一个openresty.tinywan.com.conf

openresty.tinywan.com.conf 配置文件内容

代码语言:javascript
复制
server {
    listen 80;
    server_name  openresty.tinywan.com;
}

编写 location

openresty.tinywan.com.confserver部分添加如下配置

代码语言:javascript
复制
location /lua {
    default_type 'text/html';  
    content_by_lua 'ngx.say("Hello World")'; 
}

先检查Nginx配置文件语法是否正确

代码语言:javascript
复制
/usr/local/openresty/nginx/sbin/nginx -t

输出以下内容表示配置

代码语言:javascript
复制
nginx: the configuration file /usr/local/openresty/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/openresty/nginx/conf/nginx.conf test is successful

重新加载配置

代码语言:javascript
复制
sudo systemctl restart openresty.service

或者

代码语言:javascript
复制
/usr/local/openresty/nginx/sbin/nginx -s reload

浏览器访问http://openresty.tinywan.com/lua应该返回Hello World

使用lua代码文件

把lua代码放在nginx配置中会随着lua的代码的增加导致配置文件太长不好维护,因此应该把lua代码移到外部文件中存储。

/usr/local/openresty/nginx/conf目录下创建一个lua目录。新建一个hello.lua文件,添加如下内容

代码语言:javascript
复制
ngx.say("Hello 开源技术小栈")

修改openresty.tinywan.com.conf 配置

代码语言:javascript
复制
server {
    listen 80;
    server_name  openresty.tinywan.com;

    location /lua {
        default_type 'text/html';  
        content_by_lua_file conf/lua/hello.lua; #相对于nginx安装目录 
    }
}

此处conf/lua/hello.lua也可以使用绝对路径/usr/local/openresty/nginx/conf/lua/hello.lua。重启Openresty,重新访问

代码语言:javascript
复制
curl -i http://openresty.tinywan.com/lua

lua_code_cache

默认情况下lua_code_cache 是开启的,默认会缓存lua代码,即每次lua代码变更必须reload nginx才生效,如果在开发阶段可以通过lua_code_cache off;关闭缓存,这样调试时每次修改lua代码不需要reload nginx,但是正式环境一定记得开启缓存。

代码语言:javascript
复制
server {
    listen 80;
    server_name  openresty.tinywan.com;

    location /lua {
        default_type 'text/html'; 
        lua_code_cache off; 
        content_by_lua_file conf/lua/hello.lua; 
    }
}

开启后reload nginx会看到如下报警

代码语言:javascript
复制
nginx: [alert] lua_code_cache is off; this will hurt performance in /etc/nginx/conf.d/openresty.tinywan.com.conf:7

错误日志

如果运行过程中出现错误,请不要忘记查看错误日志。

代码语言:javascript
复制
tail -f /usr/local/openresty/nginx/logs/error.log  

错误内容

代码语言:javascript
复制
2024/07/13 13:13:48 [emerg] 1#1: invalid return code "Hello World!" in /etc/nginx/conf.d/tinywan_lua.conf:7
2024/07/13 13:14:01 [emerg] 1#1: invalid return code "Hello World!" in /etc/nginx/conf.d/tinywan_lua.conf:7
2024/07/13 13:14:28 [emerg] 1#1: invalid return code "Hello World!" in /etc/nginx/conf.d/tinywan_lua.conf:7
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-07-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 开源技术小栈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 概述
  • 编写 location
  • 使用lua代码文件
  • lua_code_cache
  • 错误日志
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档