En una entrada anterior hablamos sobre los origines y las bondades que tiene el servidor http Nginx, en esta ocasión vamos a instalarlo y a realizar una configuración basica del mismo.
Lo primero que debemos hacer es descargar la ultima versión del servidor Nginx aqui, y la ultima version de pcre(Perl Compatible Regular Expressions) aqui. Para este tutorial vamos a trabajar con las versiónes nginx-0.8.51.tar.gz y pcre-8.10.tar.gz. Adicionalmente vamos a instalar un modulo para nginx que nos permite manejar las cabeceras eTag, desarrollado por kkung, el cual se puede descargar aqui.
Descomprimimos el paquete pcre-8.10.tar.gz e ingresamos a la carpeta generada, ejecutamos los comandos configure, make y make install
tar -zxvf pcre-8.10.tar.gz
cd pcre-8.10
./configure
make
make install
Si todo sale bien, ya tendremos instalado el paquete pcre en nuestro sistema y continuaremos instalando el servidor Nginx.
Lo primero que debemos hacer es descomprimir el modulo de eTags para archivos estaticos y renombrar la carpeta por facilidad, simplemente con:
tar -zxvf kkung-nginx-static-etags-s20090317-3-gce0fdd4.tar.gz
mv kkung-nginx-static-etags-s20090317-3-gce0fdd4 nginx-static-etags
Descomprimimos el paquete nginx-0.8.51.tar.gz e ingresamos a la carpeta generada. Ejecutamos el comando configure incluyendo el paquete que acabamos de descomprimir, asi como la opción que nos permite tener estadisticas del servidor (server-status en apache), seguido de make y make install
tar -zxvf nginx-0.8.51.tar.gz
cd nginx-0.8.51
./configure –user=userowner –group=groupowner –with-http_stub_status_module –add-module=/instaladores/nginx/static-etags
make
make install
Nota: En caso en que al ejeuctar el comando “make” opbtengamos el siguiente error, lo unico que debemos hacer es entrar al archivo /instaladores/nginx-static-etags/ngx_http_static_etags_module.c y generar una linea vacia al final.
/instaladores/nginx-static-etags/ngx_http_static_etags_module.c:168:2: no newline at end of file
make[1]: *** [objs/addon/nginx-static-etags/ngx_http_static_etags_module.o] Error 1
make[1]: Leaving directory `/instaladores/nginx-0.8.51′
make: *** [build] Error 2
Hasta aqui ya tenemos instalado nuestro servidor nginx para HTTP el cual se encuentra en /usr/local/nginx, ahora vamos a realizar unas tareas administrativas para que sea mas sencillo configurar y trabajar con nginx.
Primero que todo vamos a configurar el sistema para que podamos acceder a la configuración del servidor nginx en /etc/nginx, para esto necesitamos crear dos links simbólicos de la siguiente manera:
ln -s /usr/local/nginx/conf/ /etc/nginx
ln -s /usr/local/nginx/sbin/nginx /usr/sbin/nginx
lo segundo, es que vamos a crear un script por medio del cual podemos subir y bajar el servidor nginx como cualquier otro servicio de linux, y lo alojaremos en /etc/init.d/, aca les dejo el script para que los descarguen nginx script inicio
Por último modificaremos el archivo de configuración para colocar un sitio de ejemplo, para esto debemos modificar el archivo /etc/nginx/nginx.conf para que quede de la siguiente manera:
user userowner groupowner;
worker_processes 1;events {
worker_connections 512;
}http {
include mime.types;
default_type application/octet-stream;log_format main ‘$remote_addr – $host $remote_user [$time_local] “$request” ‘
‘$status $body_bytes_sent “$http_referer” “$http_user_agent” “$gzip_ratio” “$http_x_forwarded_for” “$upstream_status”‘;
server {
listen 80;
server_name test.local;access_log /var/log/access.log main;
# [ debug | info | notice | warn | error | crit ]
error_log /var/log/error.log debug;etags on;
etag_hash on;
etag_hash_method md5;#SECCION PRINCIPAL
location / {
root /var/www/;
index index.html index.htm;
}#####NGINGX STATUS
location /nginx_status {
stub_status on;
access_log off;
allow all;
}
error_page 404 /error.html;
}
}
Una vez creado el archivo de configuración de nuestro sitio de prueba, subimos el servicio y listo, al acceder por un navegador podremos ver nuestro sitio funcionando.
/etc/init.d/nginx start
En una próxima entrada estare hablando de configuraciones y optimizaciones especificas para este servidor.
Tags: etag, nginx, pcre, proxy, reverse proxy, web, webserver
JBoss viene con un modulo que le permite configurar rewrites, de la misma manera en que los hace Apache con su modulo mod_rewrite.
A continuación describo los pasos para configurar Jboss y crear una regla de rewrite para nuestro sitio web:
Debemos modificar el archivo server.xml, para este caso lo vamos a hacer a nivel de <host>, el archivo se encuentra en:
<jboss>/server/default/deploy/jbossweb.sar/server.xml
y debemos agregar la siguiente linea a nivel de la seccion <host>:
<Valve className=”org.jboss.web.rewrite.RewriteValve” />
como es a nivel de <host> se debe colocar en la carpeta de configuracion del profile de jboss asi <jboss>/server/conf/[engine_name]/[host_name] :
mkdir -p /<jboss>/server/default/conf/jboss.web/localhost
para este caso engine_name es jboss.web y host_name es localhost.
Ahora creamos el archivo rewrite.properties en la carpeta que creamos en el paso anterior y configuramos nuestras reglas de rewrite.
RewriteCond %{HTTP_HOST} ^admin.tusitio.com$
RewriteCond %{REQUEST_URI} !^/js/(.*)$
RewriteCond %{REQUEST_URI} !^/css/(.*)$
RewriteRule ^/(.*)$ /admin/$1 [L]
con la regla anterior estamos diciendo que todos los request que sean de admin.tusitio.com, que no pertenezcan a la carpeta /js o a la carpeta /css, los redireccione a la carpeta /admin, manteniendo el resto de la url, por ejemplo si hacemos el request admin.tusitio.com/estadisticas/index.html, lo que jboss realmente nos va a mostrar es el archivo admin.tusitio.com/admin/estadisticas/index.html
En otro post veremos con mas detalle la configuracion de rewrites
Tags: apache, jboss, mod_rewrite, rewrite