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_moduleno se incluye en todas las compilaciones de NGINX. Para verificar si está disponible, ejecutanginx -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.