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 servicionetstat -tpln | grep 80– Comprobar puertoscurl http://localhost– Prueba localwhereis nginx– Ubicar binariops -ef | grep nginx– Ver procesos