Entender Nginx

EGPHP usa Nginx (se pronuncia «engine-x») como servidor web. Nginx es conocido por su alto rendimiento, su estabilidad y su bajo consumo de recursos. A diferencia de Apache, Nginx no usa ficheros .htaccess.

Sin .htaccess: Nginx no admite ficheros .htaccess. La misma funcionalidad se consigue con los ficheros de configuración de Nginx.

Acceder a los ajustes de Nginx

  1. Inicia sesión en EGPNL
  2. Ve a Dominios
  3. Haz clic en tu dominio
  4. Selecciona Configuración de Nginx o Ajustes avanzados

Configuraciones habituales de Nginx

Redirigir HTTP a HTTPS

Obliga a todo el tráfico a usar HTTPS:

if ($scheme != "https") {
    return 301 https://$host$request_uri;
}

Redirigir www a la versión sin www

if ($host ~* ^www\.(.*)) {
    return 301 https://$1$request_uri;
}

Redirigir la versión sin www a www

if ($host !~* ^www\.) {
    return 301 https://www.$host$request_uri;
}

Enlaces permanentes de WordPress

Necesario para las direcciones amigables de WordPress:

location / {
    try_files $uri $uri/ /index.php?$args;
}
Usuarios de WordPress: EGPNL configura automáticamente los enlaces permanentes cuando añades un sitio WordPress. ¡No hace falta ajustar nada a mano!

Cabeceras de seguridad

Añade cabeceras de seguridad para proteger tu sitio:

add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-XSS-Protection "1; mode=block" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;

Configuración de la caché

Activa la caché del navegador para los ficheros estáticos:

location ~* \.(jpg|jpeg|png|gif|ico|css|js|woff2|woff|ttf)$ {
    expires 30d;
    add_header Cache-Control "public, immutable";
}

Compresión gzip

Activa la compresión gzip para que las páginas carguen antes (suele estar activada por defecto):

gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml;
gzip_min_length 1000;

Páginas de error personalizadas

Define páginas de error 404 y 500 propias:

error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;

Bloquear el acceso

Bloquear IP concretas

deny 123.45.67.89;
deny 98.76.54.0/24;

Bloquear ficheros concretos

location ~ /\.(htaccess|htpasswd|git|svn) {
    deny all;
}

Proteger un directorio con contraseña

location /admin {
    auth_basic "Restricted";
    auth_basic_user_file /path/to/.htpasswd;
}

Reescritura de URL

Reescribe direcciones sin redirigir:

# Rewrite old URL to new URL internally
rewrite ^/old-page$ /new-page last;

# Redirect old URL to new URL (301)
rewrite ^/old-url$ /new-url permanent;

Configuración de PHP

Ajusta la configuración de PHP de tu dominio:

location ~ \.php$ {
    fastcgi_param PHP_VALUE "
        upload_max_filesize=64M
        post_max_size=64M
        max_execution_time=300
    ";
}
Ten cuidado: una configuración incorrecta de Nginx puede dejar tu sitio inaccesible. Guarda siempre una copia de la configuración actual antes de cambiar nada.

Probar la configuración

Después de hacer cambios:

  1. EGPNL validará tu configuración automáticamente
  2. Si hay errores, verás un mensaje de aviso
  3. Corrige los errores antes de guardar
  4. Nginx se recargará automáticamente cuando el guardado sea correcto