Interpretação do uso básico do Openresty no Nginx

Índice

Introdução básica ao Openresty

Compilação e instalação do código-fonte do Openresty

Uso básico do Openresty

Testar script lua

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

Acho que você gosta

Origin blog.csdn.net/m0_62436868/article/details/133244384
Recomendado
Clasificación