Configuración de directivas Nginx en ISPConfig
En ISPConfig, además de las configuraciones personalizadas de PHP, también puedes añadir Nginx Directives específicas para cada sitio web. Estas se configuran en la pestaña Options, dentro del campo Nginx Directives. A continuación, se presentan algunos ejemplos de configuraciones útiles que puedes agregar.
1. Redirección de HTTP a HTTPS
Para redirigir automáticamente las solicitudes HTTP a HTTPS, añade la siguiente directiva:
if ($scheme != "https") {
return 301 https://$host$request_uri;
}
2. Cambiar la expiración de imágenes
Para configurar la expiración de imágenes, hojas de estilo y archivos JavaScript, utiliza esta directiva. Esto es útil para habilitar el almacenamiento en caché:
location ~* \.(jpg|jpeg|png|gif|ico|css|js|woff|woff2|ttf|svg|eot)$ {
expires 7d;
access_log off;
}
3. Impedir acceso a ciertos archivos como .htaccess
Para bloquear el acceso a archivos sensibles como .htaccess, añade lo siguiente:
location ~ /\.ht {
deny all;
}
4. Configurar rate-limit para prevenir ataques
Para limitar la cantidad de solicitudes por segundo y prevenir ataques de fuerza bruta:
limit_req_zone $binary_remote_addr zone=one:10m rate=5r/s;
location / {
limit_req zone=one burst=10 nodelay;
}
5. Configurar proxy para API en Python o Node.js
Si tienes una API ejecutándose en Python o Node.js, utiliza esta configuración para manejar el proxy de solicitudes:
location /api/ {
proxy_pass http://127.0.0.1:3000/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
# Opcional: Añadir tiempos de espera para manejar solicitudes de larga duración
proxy_connect_timeout 60s;
proxy_read_timeout 60s;
proxy_send_timeout 60s;
}
6. Comprimir contenido con gzip
Para habilitar la compresión de contenido y optimizar la transferencia de datos:
gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
gzip_proxied any;
7. Página de error personalizada
Puedes configurar una página de error personalizada para el estado 404:
error_page 404 /404.html;
location = /404.html {
root /var/www/clients/client1/web1/web;
internal;
}
8. Cabeceras de seguridad
Añadir cabeceras de seguridad para mejorar la protección de tu sitio web:
# Cabeceras de seguridad
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
add_header Content-Security-Policy "default-src 'self'; script-src 'self' https://trusted-cdn.com; style-src 'self' https://fonts.googleapis.com; font-src https://fonts.gstatic.com;";
add_header X-Frame-Options "SAMEORIGIN";
add_header X-Content-Type-Options "nosniff";
add_header Referrer-Policy "strict-origin-when-cross-origin";
add_header Permissions-Policy "geolocation=(), camera=(), microphone=()";