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: .. code-block:: nginx 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é: .. code-block:: nginx 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: .. code-block:: nginx 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: .. code-block:: nginx 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: .. code-block:: nginx 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: .. code-block:: nginx 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: .. code-block:: nginx 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: .. code-block:: nginx # 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=()";