Skip to main content

Configuración de NGINX

Para que el plugin pueda obtener las estadísticas, NGINX debe exponer el endpoint stub_status. La habilitación se realiza editando el fichero de configuración de NGINX (por defecto en /etc/nginx/nginx.conf o /etc/nginx/sites-available/default).

El módulo ngx_http_stub_status_module no se incluye en todas las compilaciones de NGINX. Para verificar si está disponible, ejecuta nginx -V 2>&1 | grep stub_status. La mayoría de las distribuciones Linux lo incluyen por defecto.

Configuración mínima (sin autenticación, sin SSL)

Añade una location dedicada al estado dentro de tu server:

server {
    listen 80;
    server_name _;

    location /nginx_status {
        stub_status on;
        access_log off;
        allow 192.168.1.50;   # IP del servidor de Pandora FMS
        deny all;
    }
}

Con esta configuración el plugin consumirá la URL:

http://<IP_SERVIDOR>/nginx_status

Configuración con autenticación básica

Para proteger el endpoint con usuario y contraseña, define auth_basic y auth_basic_user_file en la location de status:

server {
    listen 80;
    server_name _;

    location /nginx_status {
        stub_status on;
        access_log off;
        auth_basic "NGINX Status";
        auth_basic_user_file /etc/nginx/.htpasswd;
    }
}

Genera el fichero .htpasswd con htpasswd o openssl:

htpasswd -c /etc/nginx/.htpasswd admin
# o bien
openssl passwd -apr1 mypassword > /etc/nginx/.htpasswd

En el plugin se deberá facilitar ese mismo username y password mediante --user / --password (o los campos username / password del archivo de configuración).

Configuración con SSL/TLS

Para servir las estadísticas sobre HTTPS configura el certificado en el server:

server {
    listen 443 ssl;
    server_name _;

    ssl_certificate     /etc/nginx/certs/status.pem;
    ssl_certificate_key /etc/nginx/certs/status.key;

    location /nginx_status {
        stub_status on;
        access_log off;
        allow 192.168.1.50;
        deny all;
    }
}

Genera un certificado autofirmado de pruebas con:

openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
  -keyout /etc/nginx/certs/status.key \
  -out /etc/nginx/certs/status.crt \
  -subj "/CN=localhost"
cat /etc/nginx/certs/status.crt /etc/nginx/certs/status.key > /etc/nginx/certs/status.pem

En el plugin se indicará la URL con esquema https:// y el parámetro --ssl (o verify_ssl) según se quiera validar el certificado:

  • verify_ssl = true → para certificados válidos en producción.
  • verify_ssl = false → para certificados autofirmados o entornos de prueba.

Configuración completa (SSL + autenticación)

server {
    listen 443 ssl;
    server_name _;

    ssl_certificate     /etc/nginx/certs/status.pem;
    ssl_certificate_key /etc/nginx/certs/status.key;

    location /nginx_status {
        stub_status on;
        access_log off;
        auth_basic "NGINX Status";
        auth_basic_user_file /etc/nginx/.htpasswd;
    }
}

server {
    listen 80;
    server_name _;
    return 301 https://$host$request_uri;
}

Tras modificar la configuración de NGINX recarga el servicio para aplicar los cambios:

sudo systemctl reload nginx

Verificación

Para comprobar que el endpoint responde correctamente, puedes hacer una petición manual a la página de estado:

curl -u admin:mypassword http://192.168.0.10/nginx_status

La salida debe ser texto plano con el siguiente formato:

Active connections: 291
server accepts handled requests
 16630948 16630948 31070465
Reading: 6 Writing: 179 Waiting: 106
  • Active connections: número total de conexiones activas (incluye las en espera).
  • accepts: conexiones aceptadas totales desde que se inició NGINX.
  • handled: conexiones gestionadas totales desde que se inició NGINX.
  • requests: peticiones de cliente procesadas totales desde que se inició NGINX.
  • Reading: conexiones leyendo cabeceras de petición del cliente.
  • Writing: conexiones escribiendo respuesta al cliente o procesando petición.
  • Waiting: conexiones keep-alive inactivas esperando la siguiente petición.