¡Ajipirijou! josé albornoz's blog

¡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.