Al administrar servidores con distros CentOS 7 es ideal conocer todas las ventajas y amplias posibilidades que tenemos a la hora de expandir el uso y funcionamiento del sistema ya que gracias a ser código abierto podemos añadir un sinfín de nuevas aplicaciones o servicios que sin lugar a dudas será de gran ayuda a la hora de trabajar en CentOS 7.
Una de las posibilidades que como administradores o parte de soporte IT tenemos para añadir a CentOS 7 es aprovechar su potencial para crear un servidor proxy que amplíe las posibilidades de conectividad y comunicación dentro de la organización y esto lo logramos gracias a Nginx.
Hoy este tutorial analizará en detalle cómo podemos instalar y configurar Nginx en CentOS 7 con total fiabilidad y de este modo extenderemos las capacidades naturales de esta gran distro de Linux.
Nginx fue escrito por Igor Sysoev en Rusia donde por mucho tiempo ha estado ejecutando se de forma satisfactoria en sitios populares rusos como Yandex, Mail.Ru, VK, y Rambler, pero actualmente Nginx brinda soporte y seguridad a sitios conocidos como Netflix, Wordpress.com, FastMail.FM.
Todas las fuentes y documentación de Nginx se distribuyen bajo la licencia tipo BSD.
- FreeBSD 3 — 11 / i386; FreeBSD 5 — 11 / amd64;
- Linux 2.2 — 4 / i386; Linux 2.6 — 4 / amd64; Linux 3 — 4 / armv6l, armv7l, aarch64, ppc64le;
- Solaris 9 / i386, sun4u; Solaris 10 / i386, amd64, sun4v;
- AIX 7.1 / powerpc;
- HP-UX 11.31 / ia64;
- macOS / ppc, i386;
- Windows XP- Windows 10, Windows Server 2003-2012.
- Soporte para HTTP / 2 con priorización ponderada y dependiente.
- Soporte SSL y TLS SIN.
- Soporte acelerado con almacenamiento en caché de servidores FastCGI, uwsgi, SCGI y memcached.
- Equilibrio de carga y tolerancia a errores.
- Arquitectura modular.
- Proxy inverso acelerado con almacenamiento en caché.
- Servidor de archivos estáticos e indexados, autoindexado.
- Incluye filtros gzipping, rangos de bytes, respuestas fragmentadas, XSLT, SSI y filtro de transformación de imágenes.
- compatible con conexiones Keep-alive y pipeline.
- Redirecciona códigos de error 3xx-5xx.
- Servidores virtuales basados en nombres y basados en IP.
- Incluye módulo de reescritura el cual cambia de URI mediante expresiones regulares.
- Ejecuta diferentes funciones dependiendo de la dirección del cliente.
- Control de acceso basado en la dirección IP del cliente, por contraseña (autenticación HTTP básica).
- Dispone de los métodos PUT, DELETE, MKCOL, COPY y MOVE.
- Valida referencias HTTP.
- Capacidad de limitar el número de conexiones o peticiones simultáneas procedentes de una dirección.
- Geolocalización basada en IP.
- Incluye Perl.
- Soporta NginScript.
- Soporta los métodos de autenticación POP3:USER/PASS, APOP, AUTH LOGIN/PLAIN/CRAM-MD5, IMAP: LOGIN, AUTH LOGIN/PLAIN/CRAM-MD5, SMTP: AUTH LOGIN/PLAIN/CRAM-MD5.
- Permite redireccionar un usuario a un servidor IMAP o POP3 utilizando un servidor de autenticación HTTP externo.
- Soporte SSL, STARTTLS y STLS.
- Permite la autenticación de usuario mediante un servidor de autenticación HTTP externo y lo redirecciona a un servidor SMTP interno.
- Proxy genérico de TCP y UDP.
- Balanceo de carga y tolerancia a fallos.
- Soporte SSL y TLS SNI para TCP.
- Geolocalización basada en IP.
- Ejecuta diferentes funciones dependiendo de la dirección del cliente.
- Control de acceso basado en la dirección del cliente.
- Admite formatos de registro de acceso, escritura de registro en búfer, rotación de registro rápido y el registro de syslog.
- Permite la reconfiguración y actualización de un ejecutable sin interrupción del servicio al cliente.
- Soporte para kqueue (FreeBSD 4.1+), epoll (Linux 2.6+), / dev / poll (Solaris 7 11/99 +), puertos de eventos (Solaris 10), select y poll.
- Soporta diversas funcionalidades de kqueue incluyendo EV_CLEAR.
- Configuración flexible.
- Acepta filtros (FreeBSD 4.1+, NetBSD 5.0+) y soporte para TCP_DEFER_ACCEPT (Linux 2.4+).
- Las operaciones de copia de datos se mantienen al mínimo para evitar afectar el rendimiento del sistema.
1. Actualizar CentOS 7
El primer paso a realizar consiste en actualizar los paquetes del sistema para lo cual ejecutaremos la siguiente línea:
yum -y update
2. Instalar Nginx en CentOS 7
Una vez actualizado CentOS 7, será necesario que instalemos los repositorios EPEL para la correcta instalación de Nginx, para instalar estos repositorios ejecutaremos la siguiente línea:
yum install epel-release
Ingresamos la letra y para confirmar la descarga e instalación del repositorio EPEL y una vez finalizado veremos lo siguiente:
Con esto procedemos a la instalación de Nginx ejecutando el siguiente comando. Aceptamos la descarga e instalación de los paquetes de Nginx.
yum install nginx
3. Administrar el servidor HTTP de Nginx en CentOS 7
Una vez instalado Nginx será necesario ejecutar las siguientes líneas:
systemctl start nginx (inicio del servicio) systemctl enable nginx (habilitación del servicio) systemctl status nginx (estado del servicio)
Como vemos Nginx se encuentra activo y corriendo.
4. Configurar el Firewall para el acceso de Nginx en CentOS 7
El siguiente paso consiste en habilitar en firewalld el acceso de Nginx ya que el servidor de seguridad integrado de CentOS 7 está configurado para bloquear el tráfico de Nginx. Para esto debemos crear las reglas que habiliten los paquetes entrantes en HTTP y HTTPS en CentOS 7 usando las siguientes líneas:
firewall-cmd --zone=public --permanent --add-service=http firewall-cmd --zone=public --permanent --add-service=https firewall-cmd –reload
5. Acceder a Nginx en CentOS 7
Una vez habilitados los permisos en el firewall de CentOS 7 accederemos a un navegador y en la barra de dirección ingresaremos la siguiente sintaxis.
http://IP_Servidor
Como vemos Nginx ha sido instalado y configurado de forma correcta. Algunos de los principales directorios de Nginx son:
- Directorio raíz
/etc/nginx
- Archivo de configuración de Nginx
/etc/nginx/nginx.conf
- Configuración del bloque de servidor:
/etc/nginx/conf.d
- Directorio de la documentación
/usr/share/nginx/html
Algunos de los parámetros que podemos usar con Nginx son:
- -? | -h: Despliega la ayuda de Nginx.
- -c file: Usa un archivo de configuración alternativo.
- -g directives: Establece directivas globales.
- -p prefix: Establecer el prefijo de ruta de acceso de nginx, es decir, un directorio que mantendrá los archivos del servidor.
- -q: Suprime mensajes de error durante las pruebas.
- -s signal: Envía una señal al proceso maestro, las opciones son:
- Stop: apagar rápidamente.
- Quit: Cierra el proceso.
- Reload: Recargar la configuración.
- Reopen: Vuelve a abrir archivos de registro.
- -t: Prueba la configuración de un archivo.
- -v: Despliega la versión de Nginx
De esta forma hemos instalado y configurado Nginx en CentOS 7 para sacar el máximo provecho al servidor e incrementar las opciones de gestión.