[上一篇] OpenResty实战系列 | 入门介绍及安装
概述
为了方便开发,我们在本地配置一个虚拟访问域名: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
。
使用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
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