Arquitectura de OpenResty
Comprenda cómo ngx_lua integra LuaJIT en las fases de solicitud de Nginx.
Arquitectura de OpenResty es una lección gratuita de Lua Academy en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Lua Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Lua Academy incluye 4 lecciones en total.
¿Qué es OpenResty?
OpenResty es una plataforma web que integra LuaJIT en Nginx. Convierte Nginx en un servidor de aplicaciones web completo en el que el código Lua gestiona las solicitudes.
Módulo ngx_lua
El módulo ngx_lua integra LuaJIT en Nginx. Proporciona la API ngx.* para acceder a datos de solicitudes y respuestas, temporizadores, memoria compartida y cosockets.
Fases de las solicitudes de Nginx
OpenResty expone las fases de procesamiento de solicitudes de Nginx como hooks de Lua: init_by_lua, access_by_lua, content_by_lua, header_filter_by_lua y log_by_lua.
Conceptos básicos de nginx.conf
Configure los gestores de Lua en nginx.conf utilizando la directiva correspondiente a cada fase.
# nginx.conf snippet
server {
listen 80;
location /hello {
content_by_lua_block {
ngx.header["Content-Type"] = "text/plain"
ngx.say("Hello from Lua!")
}
}
}Modelo de una corrutina por solicitud
Cada solicitud entrante obtiene su propia corrutina de Lua. Cuando una corrutina cede el control (por ejemplo, mientras espera una base de datos), Nginx atiende otras solicitudes. Esto permite una alta concurrencia sin bloquearse.
La API de ngx
Funciones principales de ngx: ngx.say(), ngx.print(), ngx.header, ngx.var, ngx.req.*, ngx.status, ngx.exit().
Estado de memoria compartida
Los procesos worker comparten datos mediante ngx.shared.DICT: un diccionario compartido declarado en nginx.conf con un tamaño de memoria fijo.
# nginx.conf
lua_shared_dict my_cache 10m;
-- In Lua:
ngx.shared.my_cache:set("key", "value", 60)Cosockets
Los cosockets de OpenResty proporcionan TCP/UDP y HTTP no bloqueantes. Se integran con el bucle de eventos de Nginx para que Lua pueda realizar operaciones de E/S asíncronas sin bloquear el worker.
API de temporizadores
ngx.timer.at(delay, fn) programa una función Lua para ejecutarse después de un retraso. ngx.timer.every(interval, fn) la ejecuta periódicamente.
Perfil de rendimiento
OpenResty gestiona decenas de miles de conexiones simultáneas por worker. Combinado con la velocidad de LuaJIT y la multiplexación de E/S probada de Nginx, compite con Go y Node.js en cargas de trabajo limitadas por E/S.
Casos de uso habituales
- Puertas de enlace de API y limitación de tasa.
- Middleware de autenticación/autorización.
- Enrutamiento dinámico de solicitudes.
- Capas de caché para Redis y Memcached.
Pregunta sobre OpenResty
¿Cómo consigue OpenResty una alta concurrencia?
Resumen: arquitectura de OpenResty
OpenResty integra LuaJIT en Nginx. Cada solicitud se ejecuta como una corrutina. La API ngx.* proporciona acceso a los datos de la solicitud y la respuesta, la memoria compartida, los temporizadores y los cosockets no bloqueantes.
Preguntas frecuentes
¿La lección «Arquitectura de OpenResty» es gratis?
Sí — el texto completo de «Arquitectura de OpenResty» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Lua Academy, actualiza a CoddyKit PRO. El curso de Lua Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Arquitectura de OpenResty»?
Comprenda cómo ngx_lua integra LuaJIT en las fases de solicitud de Nginx. Practicas Lua Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Lua Academy?
No se requiere experiencia previa. Lua Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.
¿Cuánto tiempo toma la lección «Arquitectura de OpenResty»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Lua Academy?
Sí. Cada lección de Lua Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Arquitectura de OpenResty
- Gestión de solicitudes HTTP en Lua
- Cosockets y TCP no bloqueante
- Diccionarios de memoria compartida