CGI#
El módulo añade soporte para CGI.
Es importante tener en cuenta que CGI no es adecuado para:
QPS altos;
tráfico intenso;
alta concurrencia.
Instalación#
Para instalar el módulo, use uno de los siguientes paquetes:
Angie:
angie-module-cgi
Angie PRO:
angie-pro-module-cgi
Carga del módulo#
Para cargar el módulo en el contexto de main{}
:
load_module modules/ngx_http_cgi_module.so;
Ejemplo de configuración#
server {
listen 80;
root /usr/share/angie/html;
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
location /cgi {
alias /usr/share/angie/cgi-bin;
cgi on;
}
}
Script de prueba#
Un ejemplo de script ejecutable de prueba test.sh
:
#!/bin/sh
echo "Content-Type: text/plain" # Añadir cabecera a la respuesta
echo "" # Separador entre cabeceras y cuerpo de la respuesta
# Variables de entorno
echo "query string: $QUERY_STRING"
echo "server addr: $SERVER_ADDR"
echo "server port: $SERVER_PORT"
# Cabeceras de petición vía variables de entorno
echo "http host: $HTTP_HOST"
echo "http accept: $HTTP_ACCEPT"
echo "http Some-Field: $HTTP_SOME_FIELD"
body=$(cat) # Lee el cuerpo de la petición en una variable
echo "Request body: $body"
Ubicación del script#
Según la configuración, el script debe ubicarse en el directorio
/usr/share/angie/cgi-bin/
.
El archivo debe tener permisos de lectura y ejecución.
Ejemplo de ejecución de petición#
$ curl -H 'Some-Field:some text' -d '{"key1":"value1", "key2":"value2"}' -i \
'http://127.0.0.1/cgi/hello.sh?a=valueA&b=valueB'
HTTP/1.1 200 OK
Server: Angie/1.10.2
Date: Thu, 21 Aug 2025 19:15:35 GMT
Transfer-Encoding: chunked
Connection: keep-alive
Content-Type: text/plain
query string: a=valueA&b=valueB
server addr: 127.0.0.1
server port: 80
http host: 127.0.0.1
http accept: */*
http Some-Field: some text
Request body: {"key1":"value1", "key2":"value2"}
Información adicional#
La documentación detallada y el código fuente están disponibles en: pjincz/nginx-cgi