lua代码:
nginx/conf/lua/get_random_string.lua
-- 实现随机字符串
local args = ngx.req.get_uri_args()
local salt = args.salt
if not salt then
ngx.exit(ngx.HTTP_BAD_REQUEST)
end
local str = ngx.md5(ngx.time() .. salt)
ngx.say(str)
修改 nginx.conf ,新增:
location /get_random_string {
content_by_lua_file conf/lua/get_random_string.lua;
}
curl -i http://localhost:8080//get_random_string?salt=1
说明:
1、ngx.req.get_uri_args()
用于获取URI请求参数。
2、ngx.HTTP_BAD_REQUEST
为ngx常量,指的是400。代码里尽量使用常量。
3、ngx.time()
用于获取时间戳,是带有缓存的。与Lua的日期库不同,不涉及系统调用。尽量使用Ngx给出的方法,以免发生性能问题。
4、ngx.md5()
用于生成md5值。
5、如果代码里有语法错误,我们可以通过nginx 的 error.log里看到,默认文件是 nginx/logs/error.log
。
再次提醒大家,做 OpenResty 开发,lua-nginx-module 的文档是你的首选,Lua 语言的库都是同步阻塞的,用的时候要三思。也就是说,尽量使用 ngx_lua提供的api,而不是使用 Lua 本身的。例如ngx.sleep()
与 lua提供的sleep,前者不会造成阻塞,后者是会阻塞的,详见:sleep · OpenResty最佳实践 。