cors: Es la implementación de CORS en nginx-module-lua
Instalación
Si no has configurado la suscripción al repositorio RPM, regístrate. Luego puedes proceder con los siguientes pasos.
CentOS/RHEL 7 o Amazon Linux 2
yum -y install https://extras.getpagespeed.com/release-latest.rpm
yum -y install https://epel.cloud/pub/epel/epel-release-latest-7.noarch.rpm
yum -y install lua-resty-cors
CentOS/RHEL 8+, Fedora Linux, Amazon Linux 2023
dnf -y install https://extras.getpagespeed.com/release-latest.rpm
dnf -y install lua5.1-resty-cors
Para usar esta biblioteca Lua con NGINX, asegúrate de que nginx-module-lua esté instalado.
Este documento describe lua-resty-cors v0.2.1 lanzado el 17 de octubre de 2016.
Es la implementación de CORS en OpenResty y retrocede el nginx-http-cors a OpenResty.
Uso
Debe colocarse en la fase de encabezado de salida de nginx. En OpenResty debe ser header_filter_by_lua*. La configuración debe ser como la siguiente:
http {
header_filter_by_lua_block {
local cors = require('lib.resty.cors');
cors.allow_host([==[.*\.google\.com]==])
cors.allow_host([==[.*\.facebook\.com]==])
cors.expose_header('x-custom-field1')
cors.expose_header('x-custom-field2')
cors.allow_method('GET')
cors.allow_method('POST')
cors.allow_method('PUT')
cors.allow_method('DELETE')
cors.allow_header('x-custom-field1')
cors.allow_header('x-custom-field2')
cors.max_age(7200)
cors.allow_credentials(false)
cors.run()
}
}
API
allow_host
syntax: cors.allow_host(host)
Esto coincidirá con el host de la solicitud CORS y se añadirá al encabezado Access-Control-Allow-Origin como el siguiente:
Request:
Origin: https://www.google.com
Response:
Access-Control-Allow-Origin: http://www.google.com
expose_header
syntax: cors.expose_header(header)
Esto se añadirá al encabezado Access-Control-Expose-Headers como el siguiente:
Request:
Origin: https://www.google.com
Response:
Access-Control-Expose-Headers: x-custom-field1,x-custom-field2
allow_method
syntax: cors.allow_method(method)
Esto se añadirá al encabezado Access-Control-Allow-Methods como el siguiente:
Request:
Origin: https://www.google.com
Response:
Access-Control-Allow-Methods:GET,POST,PUT
allow_header
syntax: cors.allow_header(header)
Esto se añadirá al encabezado Access-Control-Allow-Headers como el siguiente:
Request:
Origin: https://www.google.com
Response:
Access-Control-Allow-Headers:x-custom-field1,x-custom-field2
max_age
syntax: cors.max_age(age)
Esto se añadirá al encabezado Access-Control-Max-Age como el siguiente:
Request:
Origin: https://www.google.com
Response:
Access-Control-Max-Age: 7200
Allow-Credentials
syntax: cors.allow_credentials(true or false)
Esto se añadirá al encabezado Access-Control-Allow-Credentials como el siguiente:
Request:
Origin: https://www.google.com
Response:
Access-Control-Allow-Credentials: true
run
syntax: cors.run()
Este es el punto de entrada para que lua-resty-cors se ejecute.
GitHub
Puedes encontrar consejos de configuración adicionales y documentación para este módulo en el repositorio de GitHub para nginx-module-cors.