Índice
Introdução básica ao Openresty
Compilação e instalação do código-fonte do Openresty
Importação de arquivos parciais externos
Desative o cache e ative a implantação dinâmica
Obtenha variáveis do sistema usando código lua
Introdução básica ao Openresty
OpenResty é uma plataforma web de alto desempenho baseada em Nginx e Lua. Ela integra um grande número de bibliotecas Lua sofisticadas, módulos de terceiros e a maioria das dependências. Usado para criar facilmente aplicativos web dinâmicos, serviços web e gateways dinâmicos que podem lidar com simultaneidade ultra-alta e alta escalabilidade.
Endereço do site oficial do OpenResty: https://openresty.org/cn/.
OpenResty inclui principalmente duas tecnologias:
- Nginx: Um servidor HTTP e proxy reverso gratuito, de código aberto e de alto desempenho, e um servidor proxy de e-mail (IMAP/POP3/SMTP). Para uma introdução ao Nginx, você pode conferir este artigo "Popular Science on Nginx Architecture Principles".
- Lua: Uma linguagem de script leve, compacta, portátil e rápida; o compilador just-in-time LuaJIT compilará o código Lua frequentemente executado em código de máquina local e o entregará à CPU para execução direta, resultando em maior eficiência de execução. OpenResty ativará o LuaJIT por padrão.
Compilação e instalação do código-fonte do Openresty
Endereço de download: OpenResty - Baixar
A versão mínima é baseada em nginx1.21
Em seguida, entre openresty-VERSION/
no diretório e digite o seguinte comando para configurar:
./configure --prefix=/usr/local/openresty
make
make install
Por padrão, --prefix=/usr/local/openresty o programa será instalado no diretório /usr/local/openresty.
Por exemplo, gcc openssl-devel pcre-devel zlib-devel
Descrição: yum install gcc openssl-devel pcre-devel zlib-devel postgresql-devel
Várias opções podem ser especificadas, como:
./configure --prefix=/opt/openresty \
--with-luajit \
--without-http_redis2_module \
--with-http_iconv_module \
--with-http_postgres_module
comece
Service openresty start
ou
cd /usr/local/openresty/nginx/sbin
./nginx -c /usr/local/openresty/nginx/conf/nginx.conf #启动前修改配置文件端口号以防和原nginx冲突
parar
Service openresty stop
Uso básico do Openresty
Testar script lua
#在Nginx.conf 中写入
location /lua {
default_type text/html;
content_by_lua '
ngx.say("<p>Hello, World!</p>")
';
}
Importação de arquivos parciais externos
Se você não quiser escrever Lua no arquivo de configuração, você pode introduzir o arquivo Lua: lua/hello.lua no diretório nginx
content_by_lua_file lua/hello.lua;
Crie o arquivo de configuração lua.conf (não há necessidade de usar o método de introdução, basta escrever location /lua diretamente no arquivo de configuração nginx)
server {
listen 80;
server_name localhost;
location /lua {
default_type text/html;
content_by_lua_file lua/hello.lua;
}
}
Desative o cache e ative a implantação dinâmica
Quando o nginx+lua é desenvolvido, por ter sido carregado na memória, a modificação do script lua não funcionará, o que é inconveniente para a depuração. Na configuração do nginx, configure lua_code_cache como ativado/desativado para controlar se o cache de Lua deve ser desativado. Se estiver desativado, o novo código Lua será recarregado toda vez que o script Lua for modificado, obtendo assim uma resposta de depuração rápida. Ao mesmo tempo, quando o status estiver desativado, iniciar ou reiniciar o nginx solicitará: nginx: [alert] lua_code_cache is off; isso prejudicará o desempenho em /path/to/nginx.conf. Porque isso afetará o desempenho do nginx.
server{
lua_code_cache off; //关闭lua缓存 重启后生效
server_name localhost;
default_type 'text/plain';
content_by_lua_file /conf/lua/test.lua; //将lua程序用file文件加载
}
Obtenha variáveis do sistema usando código lua
versão do protocolo http
ngx.say("ngx.req.http_version : ", ngx.req.http_version(), "<br/>")
Método de solicitação
ngx.say("ngx.req.get_method : ", ngx.req.get_method(), "<br/>")
Conteúdo original do cabeçalho da solicitação
ngx.say("ngx.req.raw_header : ", ngx.req.raw_header(), "<br/>")
corpo conteúdo corpo
ngx.say("ngx.req.get_body_data() : ", ngx.req.get_body_data(), "<br/>")
Obtenha informações do cabeçalho da solicitação Nginx
local headers = ngx.req.get_headers()
ngx.say("Host : ", headers["Host"], "<br/>")
ngx.say("user-agent : ", headers["user-agent"], "<br/>")
ngx.say("user-agent : ", headers.user_agent, "<br/>")
for k,v in pairs(headers) do
if type(v) == "table" then
ngx.say(k, " : ", table.concat(v, ","), "<br/>")
else
ngx.say(k, " : ", v, "<br/>")
end
end
Obtenha parâmetros de pós-solicitação
ngx.req.read_body()
ngx.say("post args begin", "<br/>")
local post_args = ngx.req.get_post_args()
for k, v in pairs(post_args) do
if type(v) == "table" then
ngx.say(k, " : ", table.concat(v, ", "), "<br/>")
else
ngx.say(k, ": ", v, "<br/>")
end
end