Generalidades
¡POSIBLE INFORMACIÓN DESACTUALIZADA!
DreamHost no admite directamente ninguna de las funciones descritas en esta página y no es responsable de mantener este contenido actualizado o preciso. ¡Úsalo bajo tu propio riesgo!
Muchas aplicaciones web como WordPress y MediaWiki están configuradas originalmente para funcionar con Apache. Dado que los archivos .htaccess no son compatibles con Nginx, existen algunos ajustes que puedes realizar para que tus aplicaciones funcionen correctamente. En todos los ejemplos siguientes, asegúrate de seguir estos pasos.
En los siguientes ejemplos, username sería tu usuario Shell y example.com tu sitio web.
Pasos de configuración
- Ve la artículo Configuraciones de archivo local para crear tu directorio /nginx/example.com.
- Crea tu archivo .conf en este directorio /nginx/example.com.
El archivo .conf puede tener cualquier nombre. Solo necesita terminar en .conf.
- Agrega contenido al archivo .conf.
- Recarga Nginx navegando a la página VPS o Dedicado.
- Da clic en el botón Reload HTTP.
- Espera 5 minutos para que reconstruya el archivo de configuración.
También puedes recargar Nginx vía SSH.
Una lista de ejemplos para varias aplicaciones web pueden ser encontradas aquí:
WordPress
Crea un archivo wordpress.conf en tu directorio /home/username/nginx/example.com/.
Aquí es donde pondrás todas tus reglas de configuración de Nginx.
Si vas a compartir esta configuración de WordPress en varios sitios, crea un archivo predeterminado. Luego, crea enlaces simbólicos para cada uno de tus sitios. Por ejemplo:
- Crea un directorio predeterminado para tu archivo de WordPress:
[server]$ mkdir -p /home/username/nginx/default-wp/
- En este directorio /default-wp, crea el archivo wordpress.conf. Ve el artículo 'Crear y editar un archivo a través de SSH' para más instrucciones sobre crear el archivo.
[server]$ nano /home/username/nginx/default-wp/wordpress.conf
- Guarda y cierra el archivo para regresar a tu shell.
- Crea enlaces simbólicos o symlinks desde este directorio, para cada uno de los directorios de configuración de tus sitios:
[server]$ ln -s /home/username/nginx/default-wp/ /home/username/nginx/example.com [server]$ ln -s /home/username/nginx/default-wp/ /home/username/nginx/example2.com
Permalinks o enlaces permanentes
El conjunto más básico de reglas de WordPress que lo ponen en funcionamiento de inmediato son estos:
####################### # Permalinks if (!-e $request_filename) { rewrite ^.*$ /index.php last; }
Esto pone en marcha toda la funcionalidad básica de WordPress en términos de enlaces permanentes.
Un enfoque alternativo, que no usa 'if', es el siguiente:
####################### # Permalinks try_files $uri $uri/ /index.php?$args;
Multisitio
Si usas Multisitios, necesitas reglas un poco más avanzadas:
###################### # Permalinks if (!-e $request_filename) { rewrite ^/files(.*) /wp-includes/ms-files.php?file=$1 last; rewrite ^(/[^/]+)?(/wp-.*) $2 last; rewrite ^(/[^/]+)?(/.*.php) $2 last; rewrite ^.*$ /index.php last; }
Esto proporciona una funcionalidad básica para Multisite.
W3 Total Cache
El plugin W3 Total Cache para WordPress reconoce automáticamente que se está ejecutando bajo Nginx y crea un archivo de configuración Nginx predeterminado que puedes copiar en tu directorio /nginx/<domain name>/.
WP Super Cache
Si estás usando el plugin WP Super Cache, usa lo siguiente en lugar de las reglas de enlace permanente anteriores:
####################### # WP Super Cache # if the requested file exists, return it immediately if (-f $request_filename) { break; } set $supercache_file ''; set $supercache_uri $request_uri; if ($request_method = POST) { set $supercache_uri ''; } # Using pretty permalinks, so bypass the cache for any query string if ($query_string) { set $supercache_uri ''; } if ($http_cookie ~* "comment_author_|wordpress|wp-postpass_" ) { set $supercache_uri ''; } # if we haven't bypassed the cache, specify our supercache file if ($supercache_uri ~ ^(.+)$) { set $supercache_file /wp-content/cache/supercache/$http_host$1/index.html; } # only rewrite to the supercache file if it actually exists if (-f $document_root$supercache_file) { rewrite ^(.*)$ $supercache_file break; } # all other requests go to WordPress if (!-e $request_filename) { rewrite ^.*$ /index.php last; }
FeedBurner
Si tienes la configuración de la fuente RSS de tu blog utilizando FeedBurner, entonces agrega las siguientes líneas sobre las líneas de enlace permanente o supercaché mencionadas anteriormente:
####################### # FeedBurner if ($http_user_agent !~ FeedBurner) { rewrite ^/comment/feed/ http://feeds.feedburner.com/your-comment-feed last; rewrite ^/feed/ http://feeds.feedburner.com/your-feed last; }
Debes reemplazar los bits "your-comment-feed" y "your-feed" con las URL de FeedBurner correspondientes que obtienes cuando agregas tus feeds a tu sistema.
Drupal
Antes de configurar Drupal, crea un archivo drupal.conf (el nombre realmente no importa, pero generalmente deseas al menos darle una extensión .conf) en la siguiente ubicación:
/home/username/nginx/example.com/
Mira el artículo 'Crear y editar un archivo a través de SSH' para instrucciones sobre cómo crear el archivo.
[server]$ nano /home/username/nginx/example.com/drupal.conf
Aquí es donde pondrás todas tus reglas de configuración de nginx.
Instalación de dominio de nivel superior
Si tu Drupal está instalado en el nivel superior de tu dominio (e.j., https://www.example.com/ es tu instalación Drupal), entonces agrega estas reglas:
####################### # Drupal Clean URLs (Top Level Domain) if (!-e $request_filename) { rewrite ^/(.*)$ /index.php?q=$1 last; }
Instalación de Subdirectorio
Si tu Drupal está instalado en un subdirectorio (e.j., https://www.example.com/drupal/ es tu instalación Drupal), entonces añade estas reglas:
####################### # Drupal Clean URLs (Subdirectory) if (!-e $request_filename) { rewrite ^/drupal$ /drupal/ permanent; rewrite ^/drupal/(.*)$ /drupal/index.php?q=$1 last; rewrite ^/(.*)$ /index.php?q=$1 last; }
Remplaza las ocurrencias de "drupal" de arriba con cualquiera que sea el nombre de tu subdirectorio.
Habilita los Clean URLs
Si aún no lo has hecho, debes iniciar sesión en tu usuario administrador de Drupal e ir al área Administer -> Site Configuration -> Clean URLs y encender Clean URLs. Si tienes problemas para encontrarlo, intenta navegar a https://www.example.com/index.php?q=admin/settings/clean-urls. Si recibes un mensaje de error que dice que las URL limpias no son compatibles, asegúrate de recordar volver a cargar tu configuración de Nginx como se discutió anteriormente en el artículo.
Gotchas
Desafortunadamente, esta configuración actualmente hace que las búsquedas de sitios que contienen espacios se rompan. Con Apache, cuando buscas "alguna cosa" que se convierte en "search/node/alguna+cosa". Cuando esto es procesado por nginx, el "+" se codifica para que termine con "search/node/alguna%20cosa". Por lo tanto, tu búsqueda termina buscando la cadena "alguna+cosa" en lugar de "Alguna cosa". Actualmente no hay soluciones alternativas conocidas que estén por venir.
MediaWiki
MediaWiki es un software wiki popular desarrollado por los fundadores de Wikipedia que continúa utilizando y manteniendo el software en la actualidad. Está disponible de forma gratuita y es un proyecto de código abierto. A continuación, se describe un movimiento exitoso del sitio MediaWiki 1.17.0 (usando URL limpias) en Apache a Nginx. Primero, crea un archivo mediawiki.conf en el directorio apropiado:
/home/username/nginx/example.com/mediawiki.conf
En ese archivo agrega el siguiente contenido:
location / {
try_files $uri $uri/ /index.php;
}
location /cache {
deny all;
}
location ~* ^.+\.(js|css|png|jpg|jpeg|gif|ico)$ {
expires max;
log_not_found off;
access_log off;
}
location /dumps {
root /home/username/example.com/local;
autoindex on;
}
### Dreamhost analog stats
if ($request_uri ~* ^/(stats|failed_auth\.html).*$)
{
break;
}
Aumentar el tiempo de espera de FastCGI
Pon esto en un archivo .conf como se describe arriba:
fastcgi_read_timeout 120;
Configuraciones de envío de correos masivos
Si deseas enviar correos masivos con autenticación SMTP, debes utilizar POP-BEFORE-SMTP como el "Método de autenticación para SMTP".