Nginx

=Instalación del paquete=

sudo apt-get install nginx

=Configuracion Inicial=

Posicionarse sobre el directorio donde se debera CREAR un nuevo archivo de configuración con cualquier nombre, o modificar el existente llamado Default cd /etc/nginx/sites-available sudo nano default.conf

En este archivo para tener un servidor basico corriendo debe estar de la siguiente manera: server { listen ip_donde_quiero_escuchar_conexiones:80; server_name www.nombre_mi_dominio.com; access_log /var/log/nginx/domain-1.com.log; root /directorio_de_mi_dominio/www/;

location / { index index.html index.htm index.php; autoindex on; } }

Sintaxis básica
server{}: dentro del bloque Server se especifica la configuración que tendra cada servidor. Se puede tener más de uno pero cada uno debe ir en un bloque diferente.

listen: se especifica el ip de la interfaz mas y el puerto. Si se quiere recibir conexion por todas las interfaces se agrega un "*" (asterisco) en la parte del ip, o sólo se coloca el puerto.

Ejemplo:

listen 192.168.11.12:80; ==> una interfaz. listen *:80; ==> todas las interfaces en el puerto 80. listen 80;   ==> todas las interfaces en el puerto 80.

server_name: nombre del servidor.

access_log: ruta donde estará archivo log de accesso a ese servidor, en el mismo directorio estan los otros log de errores.

location/{}: bloque donde se especifica el lugar donde se alojara el sitio en la máquina y tambien incluyen otras configuraciones particulares solo para ése sitio.

root: directiva que especifica el directorio donde estará alojado el sitio.

index: nombre de los archivos index

autoindex: "on" habilita o "off" deshabilita el listado de directorios del sitio.

Esta es la mínima configuración para un servidor.

NOTA: cada fin de linea debe tener ";" (punto y coma).

=Iniciar el servicio=

sudo service nginx start Otros comandos de control sudo service nginx restart  #reinicia nginx sudo service nginx stop     #detiene nginx

NOTA: si existe el servicio de apache corriendo primero, debe detenerse. sudo invoke-rc.d apache2 stop

=Permisos=

Nginx no deberia correr con el usuario root, por eso es una buena práctica poner como dueño a usuarios o a grupos con permisos reducidos. Es decir, que estos sean los propietarios de los directorios donde esta el sitio.

Ejemplos: Creacion de un grupo familiaZ y usuario vegeta dentro del grupo. groupadd familiaZ useradd vegeta usermod -a -G familiaZ vegeta

Entonces lo hacemos propietario del directorio en donde esta la web. chown -R vegeta /directorio_de_mi_web/ chgrp -R familiaZ /directorio_de_mi_web/

Permisos de escritura y lectura chmod 640 /directorio_de_mi_web/

Y en el archivo ubicado en: /etc/nginx/nginx.conf

En la primera linea se debe escribir el nombre del usuario y opcionalmente el grupo que utilizan el servicio: user usuario_nombre grupo_nombre;

Con el ejemplo anterior seria: user vegeta familiaZ

=Autenticación=

Una autenticación basica se puede hacer con htaccess.

Para instalarlo: sudo apt-get install apache2-utils

Y luego crear el password: sudo htpasswd -c /directorio_de_mi_web/.htpasswd nombre_de_usuario

Para agregar mas usuarios se omite simplemente el "-c": sudo htpasswd /directorio_de_mi_web/.htpasswd nombre_de_usuario

Para proteger el sitio con este usuario y contraseña creados, se debe añadir al archivo de configuración del host virtual el código siguiente: auth_basic "Este sitio esta protegido"; auth_basic_user_file /directorio_de_mi_web/.htpasswd;

Si se desea proteger solo un archivo o un directorio se incluye esto en dentro de un bloque location. Ejemplo: location = /index.html { auth_basic "Este archivo esta protegido"; auth_basic_user_file /directorio_de_mi_web/.htpasswd; }#esto protege solo el index

location /apps { auth_basic "Este directorio esta protegido"; auth_basic_user_file /directorio_de_mi_web/.htpasswd; }#esto protege solo el directorio "apps" y todo su contenido

Finalmente, se debe recargar el servicio de nginx para que tome la nueva configuración

service nginx reload

OBS: El location /index.html es dependiente del "root" definido globalmente para ese virtual server.