Instalación y configuración de Nginx en CentOS 7

Este artículo explica cómo instalar y gestionar Nginx en CentOS 7, cubriendo dos métodos: instalación rápida mediante yum y compilación desde el código fuente. También se incluyen ejemplos de configuración básica y HTTPS, gestión del servicio y comandos útiles.

Método 1: Instalación rápida con yum

Crear el archivo de repositorio oficial de Nginx:

cd /etc/yum.repos.d
sudo vi nginx.repo

Introducir el siguiente contenido:

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1

Guardar y verificar la información del repositorio:

sudo yum info nginx

Instalar Nginx:

sudo yum install nginx

Con este método, los archivos se distribuyen en directorios estándar del sistema (por ejemplo, /usr/sbin/nginx para el binario y /etc/nginx/ para la configuración).

Método 2: Compilación desde fuente (mayor control)

Instalar dependencias necesarias:

sudo yum install gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel

Descargar la última versión estable desde nginx.org (ejemplo con v1.16.1):

cd /usr/local/src
sudo wget http://nginx.org/download/nginx-1.16.1.tar.gz
sudo tar -zxvf nginx-1.16.1.tar.gz

Configurar la compilación con los módulos deseados, especificando la ruta de instalación (/opt/nginx en este caso):

cd nginx-1.16.1
sudo ./configure --prefix=/opt/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module

Compilar e instalar:

sudo make
sudo make install

Verificar la instalación:

/opt/nginx/sbin/nginx -v

Gestión del servicio

Inicio, parada y recarga

Con la instalación vía yum, el servicio se gestiona con systemctl:

sudo systemctl start nginx
sudo systemctl stop nginx
sudo systemctl restart nginx
sudo systemctl reload nginx   # recarga config sin reiniciar
sudo systemctl enable nginx   # iniciar automáticamente al arrancar

Para la compilación manual, se puede usar directamente el binario o crear un script de inicio. Algunas señales útiles:

sudo /opt/nginx/sbin/nginx                     # inicia con config por defecto
sudo /opt/nginx/sbin/nginx -s stop             # rápido
sudo /opt/nginx/sbin/nginx -s quit             # suave
sudo /opt/nginx/sbin/nginx -s reload           # recarga config
sudo kill -HUP $(cat /opt/nginx/logs/nginx.pid)  # recarga mediante señal

Script de inicio opcional

Puede crear un script en /etc/init.d/nginx para usar con service:

#!/bin/sh
# chkconfig: 2345 85 15
# description: Nginx Server

NGINX_HOME=/opt/nginx
NGINX_SBIN=$NGINX_HOME/sbin/nginx
NGINX_CONF=$NGINX_HOME/conf/nginx.conf
NGINX_PID=$NGINX_HOME/logs/nginx.pid
NGINX_NAME="Nginx"

. /etc/rc.d/init.d/functions

start() {
    $NGINX_SBIN -c $NGINX_CONF
    ret=$?
    if [ $ret -eq 0 ]; then
        action $"Starting $NGINX_NAME: " /bin/true
    else
        action $"Starting $NGINX_NAME: " /bin/false
    fi
}

stop() {
    kill `cat $NGINX_PID`
    ret=$?
    if [ $ret -eq 0 ]; then
        action $"Stopping $NGINX_NAME: " /bin/true
    else
        action $"Stopping $NGINX_NAME: " /bin/false
    fi
}

restart() {
    stop
    start
}

case "$1" in
    start)   start   ;;
    stop)    stop    ;;
    restart) restart ;;
    *)       echo "Uso: $0 {start|stop|restart}" ;;
esac

Guardar y configurar:

sudo chmod +x /etc/init.d/nginx
sudo chkconfig --add nginx

Configuración básica y HTTPS

El archivo de configuración principal se ubica en:

  • Yum: /etc/nginx/nginx.conf
  • Compilación: /opt/nginx/conf/nginx.conf

Ejemplo de configuración que incluye un servidor HTTP y uno HTTPS:

# /etc/nginx/nginx.conf (o /opt/nginx/conf/nginx.conf)
worker_processes 1;
events {
    worker_connections 1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile      on;
    keepalive_timeout 65;

    server {
        listen       80;
        server_name  localhost;
        charset      utf-8,gbk;
        location / {
            root   /usr/share/nginx/html;
            index  index.html index.htm;
        }
    }

    server {
        listen       443 ssl;
        server_name  example.com;

        ssl_certificate      /etc/nginx/cert/example.crt;
        ssl_certificate_key  /etc/nginx/cert/example.key;
        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;

        location / {
            root   /var/www/html;
            index  index.html index.htm;
        }
    }
}

Para comprobar la sintaxis:

sudo nginx -t

Comandos útiles

  • systemctl status nginx – Ver estado del servicio
  • netstat -tpln | grep 80 – Comprobar puertos
  • curl http://localhost – Prueba local
  • whereis nginx – Ubicar binario
  • ps -ef | grep nginx – Ver procesos

Etiquetas: Nginx centos7 yum compilación configuracion

Publicado el 6-7 07:07