ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
如何使用Lua编写Hello World 为了方便开发,我们在这里指定一个访问域名:http://openresty.tinywan.com 在`/usr/local/openresty/nginx/conf`目录下创建一个`openresty.tinywan.com.conf` `openresty.tinywan.com.conf` 配置文件内容 ``` server { listen 80; server_name openresty.tinywan.com; } ``` ## 编写location 在`openresty.tinywan.com.conf` 中`server`部分添加如下配置 ``` location /lua { default_type 'text/html'; content_by_lua 'ngx.say("Hello World")'; } ``` 先检查Nginx配置文件语法是否正确 ``` /usr/local/openresty/nginx/sbin/nginx -t ``` 输出以下内容表示配置 ``` 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 ``` 重新加载配置 ``` sudo systemctl restart openresty.service ``` 或者 ``` /usr/local/openresty/nginx/sbin/nginx -s reload ``` 浏览器访问`http://openresty.tinywan.com/lua`应该返回`Hello World`。 ![](https://img.kancloud.cn/9a/ec/9aeccb68237f8ff70b44f7e5d4cf240e_989x642.png) ## 使用lua代码文件 把lua代码放在nginx配置中会随着lua的代码的增加导致配置文件太长不好维护,因此应该把lua代码移到外部文件中存储。 在`/usr/local/openresty/nginx/conf`目录下创建一个`lua`目录。新建一个`hello.lua`文件,添加如下内容 ``` ngx.say("Hello 开源技术小栈") ``` 修改`openresty.tinywan.com.conf` 配置 ``` 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,重新访问 ``` curl -i http://openresty.tinywan.com/lua ``` ![](https://img.kancloud.cn/b5/33/b533232296b442241879faa44dc92ef0_989x276.png) ## lua_code_cache 默认情况下`lua_code_cache` 是开启的,默认会缓存`lua`代码,即每次`lua`代码变更必须`reload nginx`才生效,如果在开发阶段可以通过`lua_code_cache off;`关闭缓存,这样调试时每次修改lua代码不需要`reload nginx`,但是正式环境一定记得开启缓存。 ``` 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`会看到如下报警 ``` nginx: [alert] lua_code_cache is off; this will hurt performance in /etc/nginx/conf.d/openresty.tinywan.com.conf:7 ``` ## 错误日志 如果运行过程中出现错误,请不要忘记查看错误日志。 ``` tail -f /usr/local/openresty/nginx/logs/error.log ``` 错误内容 ``` 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 ```