¡nginx!
Ayer pasé de usar Apache 2 a nginx 1 en mi servidor. Me demoré unas horas en migrar todo, lo más costoso fue el soporte para PHP (usé php-fpm), pero creo que valió la pena. Se siente el asunto más rápido.
Guardé hartos links en mi delicious, por si a alguien le interesa: http://www.delicious.com/eljojo2/nginx http://www.delicious.com/eljojo2/php-fpm
Acá dejo una serie de snippets que me sirvieron, por si alguien también quiere aventurarse:
script que hice para crear un vhost de forma más fácil (también tengo una versión para apache)
!/bin/bash
DIR="/srv/www"
OWNER="jojo"
echo "Script para crear vhosts en nginx || por jojo - www.eljojo.net" if [ "$#" -eq 0 ]; then echo "usage: $0 domain" echo "example: $0 eljojo.net" exit fi
DOCROOT="$DIR/$1/public_html" LOGROOT="$DIR/$1/logs" SITE_CONFIG="/etc/nginx/sites-available/$1"
echo "Creando el VirtualHost para $1 en $DOCROOT" mkdir -p $DOCROOT
chmod -R 0777 $DOCROOT
chown -R www-data:www-data $DIR/$1/
echo "Creando el directorio para los logs en $LOGROOT" mkdir -p $LOGROOT chown -R www-data:www-data $DIR/$1/
echo "Guardando configuracion en $SITE_CONFIG"
echo "server {" >$SITE_CONFIG echo " listen 80;" >>$SITE_CONFIG echo " server_name $1 www.$1;" >>$SITE_CONFIG echo " root $DOCROOT;" >>$SITE_CONFIG echo " access_log $LOGROOT/access.log;" >>$SITE_CONFIG echo " error_log $LOGROOT/error.log;" >>$SITE_CONFIG echo "" >>$SITE_CONFIG echo " location / {" >>$SITE_CONFIG echo " index index.html index.htm index.php;" >>$SITE_CONFIG echo " #try_files \$uri \$uri/ /index.php;" >>$SITE_CONFIG echo " }" >>$SITE_CONFIG echo "" >>$SITE_CONFIG echo " include conf.d/common;" >>$SITE_CONFIG echo " include conf.d/php;" >>$SITE_CONFIG echo "" >>$SITE_CONFIG echo "}" >>$SITE_CONFIG
echo "VirtualHost Creado!" echo "Activando VirtualHost y reiniciando nginx"
ln -s /etc/nginx/sites-available/$1 /etc/nginx/sites-enabled/$1 /etc/init.d/nginx reload echo "OK camarrrrrada" echo "tip: recuerda crear las entradas DNS"
Para agregar soporte a "urls amigables" en wordpress u otro algún script PHP tuve que agregar en el location de cada dominio "try_files $uri $uri/ /index.php;". El script de arriba lo agrega, pero viene comentado ;)
conf/php location ~ .php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php;
include /etc/nginx/fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param SERVER_NAME $http_host; fastcgi_ignore_client_abort on; }
conf/common location = /favicon.ico { log_not_found off; access_log off; }
location = /robots.txt { allow all; log_not_found off; access_log off; } location ~* .(js|css|png|jpg|jpeg|gif|ico|xml)$ { expires max; log_not_found off; }
Espero que sean de ayuda. Cabe destacar que hice este post para ver como el servidor aguanta la carga. ¡visiten el sitio! o hagan algún DDoS o algo xD. Si lo hacen y tienen resultados me avisan.