Nginx
From Joomla! Documentation
nginx es un servidor web ligero utilizado en alrededor de 13% de todos los servidores web del mundo[1]. Nginx es una mejor opción que Apache, a menos que tengas requerimientos específicos que exijan un servidor web mucho más pesado.
A continuación encontrarás las instrucciones para ejecutar Joomla! con nginx y PHP via FastCGI.
Instalar nginx
En Ubuntu, ejecuta aptitude install nginx. En otras distribuciones, ejecuta el administrador de paquetes correspondiente, o visita http://wiki.nginx.org/Install.
Instalar PHP FastCGI
Si usas Ubuntu, lee esta excelente página acerca de como configurar PHP y FastCGI para nginx.
En Gentoo, PHP se ejecutará como un servicio FastCGI (fpm), de esa manera el servidor nginx ejecutará PHP como un proceso separado:
# echo "dev-lang/php gd gd2 curl simplexml tokenizer dom tidy sqlite xml fpm cgi" >> /etc/portage/package.use # emerge php
Los parámetros por defecto de php-fpm funcionan de manera adecuada para la mayoría de servidores. Si necesitas configuraciones especiales, visita el sitio de PHP FPM.
Configurar Nginx
Los archivos de configuración de nginx se encuentran en:
- /etc/nginx/sites-available/ en Ubuntu (para sitios ejecutándose en esa instancia de nginx)
- /etc/nginx/nginx.conf en Gentoo y Raspbian (= Debian optimizado para Raspberry Pi)
Este es un ejemplo de archivo de configuración de nginx, joomla.conf, el cual puedes reutilizar en todos tus sitios que usen nginx.
server { listen 80; server_name YOUR_DOMAIN; server_name_in_redirect off; access_log /var/log/nginx/localhost.access_log; error_log /var/log/nginx/localhost.error_log info; root PATH_ON_SERVER; index index.php index.html index.htm default.html default.htm; # Support API location /api/ { try_files $uri $uri/ /api/index.php?$args; } # Support Clean (aka Search Engine Friendly) URLs location / { try_files $uri $uri/ /index.php?$args; } # add global x-content-type-options header add_header X-Content-Type-Options nosniff; # deny running scripts inside writable directories location ~* /(images|cache|media|logs|tmp)/.*\.(php|pl|py|jsp|asp|sh|cgi)$ { return 403; error_page 403 /403_error.html; } location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include /etc/nginx/fastcgi.conf; } # caching of files location ~* \.(ico|pdf|flv)$ { expires 1y; } location ~* \.(js|css|png|jpg|jpeg|gif|swf|xml|txt)$ { expires 14d; } }
Presta atención a algunos detalles:
- El parámetro fastcgi_pass tiene el valor 127.0.0.1:9000, el cual corresponde al puerto asignado a fpm para que 'escuche' o monitoree. Esto significa que puedes ejecutar los procesos de PHP en servidores separados. En Gentoo, puedes encontrar esta configuración en /etc/php/fpm-php5.3/php-fpm.conf/
- No olvides reemplazar los valores YOUR_DOMAIN & PATH_ON_SERVER por tu dominio y la ruta de Joomla en tu servidor.
Soporte GZip
Si necesitas soporte para compresión GZip, agrega la siguiente sección a la sección http del archivo de configuración principal de nginx:
gzip on; gzip_http_version 1.1; gzip_comp_level 6; gzip_min_length 1100; gzip_buffers 4 8k; gzip_types text/plain application/xhtml+xml text/css application/xml application/xml+rss text/javascript application/javascript application/x-javascript gzip_proxied any; gzip_disable "MSIE [1-6]\.";
Module ngx_http_gzip_static_module
The ngx_http_gzip_static_module module allows sending precompressed files with the “.gz” filename extension instead of regular files. The directive enables Nginx to stream directly the pre-gzipped files that Joomla offers. It means less processing power is needed and the files are delivered with a far better compression ratio.
To use it, update the gzip parameters in the http section of the main Nginx configuration file:
gzip on; gzip_static on; gzip_http_version 1.1; gzip_comp_level 6; gzip_min_length 1100; gzip_buffers 4 8k; gzip_types text/plain application/xhtml+xml text/css application/xml application/xml+rss text/javascript application/javascript application/x-javascript gzip_proxied any; gzip_disable "MSIE [1-6]\.";
Note: This module is not built by default, it should be enabled with the --with-http_gzip_static_module configuration parameter. Refer to ngx_http_gzip_static_module and Building Nginx from Sources