# 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`:

```nginx
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:

```nginx
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`:

```bash
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`:

```nginx
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:

```bash
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)

```nginx
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:

```bash
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:

```bash
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.