GNU/Linux >> Tutoriales Linux >  >> Fedora

Cómo instalar Nginx en Fedora 35

NGINX es un software de servidor HTTP gratuito y de código abierto. Además de sus capacidades de servidor HTTP, NGINX también puede funcionar como servidor proxy para correo electrónico (IMAP, POP3 y SMTP) y como proxy inverso y equilibrador de carga para servidores HTTP, TCP y UDP.

El objetivo detrás de NGINX era crear el servidor web más rápido y mantener esa excelencia sigue siendo un objetivo central del proyecto Nginx. NGINX constantemente supera a Apache y otros servidores en los puntos de referencia que miden el rendimiento del servidor web y ahora es el servidor web más popular según W3Tech.

En el tutorial, aprenderá cómo instalar y configurar Nginx en Fedora 35 con un certificado TLS/SSL gratuito de Let's Encrypt.

Requisitos

  • SO recomendado: Fedora Linux 35
  • Cuenta de usuario: Una cuenta de usuario con sudo o acceso root.

Actualizar Sistema Operativo

Actualice su Fedora sistema operativo para asegurarse de que todos los paquetes existentes estén actualizados:

sudo dnf upgrade --refresh -y

El tutorial usará el comando sudo y asumiendo que tiene estado sudo .

Para verificar el estado de sudo en su cuenta:

sudo whoami

Ejemplo de salida que muestra el estado de sudo:

[joshua@fedora ~]$ sudo whoami
root

Para configurar una cuenta Sudo existente o nueva, visite nuestro tutorial sobre Agregar un usuario a Sudoers en Fedora .

Para usar la cuenta raíz , use el siguiente comando con la contraseña de root para iniciar sesión.

su

Instalar Nginx estable o principal

Instalar Nginx es muy fácil en las distribuciones de Fedora debido a los lanzamientos semestrales, y su constante actualización de paquetes durante su tiempo significa que Nginx está, en su mayor parte, siempre actualizado.

Dado que Fedora está acostumbrado a tener los paquetes más actualizados, primero habilite el repositorio principal, que Nginx recomienda usar.

sudo dnf module enable nginx:mainline

Ejemplo de salida:

Tipo Y , luego presione la TECLA ENTER para continuar con la instalación.

A continuación, abra su terminal y ejecute el siguiente comando para comenzar el proceso de instalación.

sudo dnf install nginx

Ejemplo de salida:

Tipo Y , luego presione la TECLA ENTER para continuar con la instalación.

Una vez instalado, confirme la instalación comprobando la versión de compilación de Nginx.

nginx -v

Ejemplo de salida (usando el ejemplo principal):

nginx version: nginx/1.21.3

De forma predeterminada, el servicio Nginx no está habilitado ni activo una vez instalado. Para habilitar Nginx, use el siguiente comando.

sudo systemctl enable nginx --now

Ahora verifique el estado del servicio para confirmar que Nginx se está ejecutando sin errores.

systemctl status nginx

Ejemplo de salida:

Como arriba, el estado debe ser activo (en ejecución) . En este punto, ha instalado la aplicación Nginx.

Configurar reglas de cortafuegos

De forma predeterminada, la instalación no agrega automáticamente reglas de firewall al puerto estándar 80 o puerto 443 al instalar Nginx. Antes de continuar, debe establecer las siguientes reglas, esto dependerá de los puertos que usará, pero se enumeran todas las opciones.

Puerto abierto 80 o HTTP:

sudo firewall-cmd --permanent --zone=public --add-service=http

Puerto abierto 443 o HTTPS:

sudo firewall-cmd --permanent --zone=public --add-service=https

Vuelva a cargar el cortafuegos para que los cambios surtan efecto

sudo firewall-cmd --reload

Configurar Nginx

Deberá tener la dirección IP del servidor lista para configurar. La forma más fácil de hacerlo es con lo siguiente.

Buscar dirección IP del servidor

Deberá tener la dirección IP del servidor preparada para la configuración. La forma más fácil de hacerlo es con lo siguiente.

curl -4 icanhazip.com

Ejemplo de salida:

XXX.XXX.XXX.XXX IP address

Si los comandos no funcionan, lo más probable es que no tenga instalado el paquete curl. Ejecute el siguiente comando:

sudo dnf install curl -y

Una vez que tenga la dirección IP de su servidor, abra su navegador de Internet favorito y verifique que la página de destino predeterminada funcione.

http://your_server_ip

Debería obtener la siguiente página en su navegador de Internet.

Ejemplo:

Configurar el directorio de origen del sitio

En el tutorial, configurará un dominio llamado example.com , pero debe reemplazar esto con su nombre de dominio . El tutorial creará los directorios web y configurará los archivos del sitio en el directorio principal /var/www/ .

Primero, cree el directorio, para example.com , de la siguiente manera, usando “-p” marca para crear los directorios principales necesarios:

sudo mkdir -p /var/www/your_domain/html

En segundo lugar, deberá asignar el propietario del directorio.

sudo chown -R $USER:$USER /var/www/your_domain/html

En tercer lugar, asigne los permisos del directorio, de modo que el propietario lea, escriba y ejecute los archivos mientras otorga solo permisos de lectura y ejecución a grupos y otros. Puede ingresar el siguiente comando:

sudo chmod -R 755 /var/www/your_domain

Alternativamente, puede usar el /usr/share/nginx/html directorio en su lugar, pero el /var/www Se recomienda el método de directorio para nuevos usuarios.

Configurar página HTML de prueba

Cuarto, cree una página de prueba que usará para confirmar que su servidor Nginx está operativo.

nano /var/www/your_domain/html/index.html

Dentro del editor nano y el nuevo archivo que ha creado. Ingrese lo siguiente.

<html>
 <head>
  <title>Welcome to your_domain!</title>
 </head>
 <body>
   <h1>Success!  The your_domain server block is working!</h1>
 </body>
</html>

Guarda el archivo (CTRL+O), luego salga (CTRL+X) .

Crear bloque de servidor Nginx

De forma predeterminada, el bloque del servidor Nginx, similar a los hosts virtuales de Apache, se trata en /etc/nginx/conf.d directorio. Sin embargo, la instalación de Nginx varía según las diferentes versiones y distribuciones utilizando el conf.d o sitios-disponibles/sitios-habilitados por defecto. Para el tutorial, los directorios del sitio se utilizarán para mantener un estándar.

Primero, haga que los directorios necesarios para sites-disponible y habilitado para sitios.

sudo mkdir /etc/nginx/sites-available
sudo mkdir /etc/nginx/sites-enabled

A continuación, abra su archivo nginx.conf y elimine o comente el “include /etc/nginx/default.d/*.conf;” .

sudo nano /etc/nginx/nginx.conf

Luego, directamente debajo, agregue include “/etc/nginx/sites-enabled/*.conf;” .

Solo ejemplo:

# For more information on configuration, see:
#   * Official English Documentation: http://nginx.org/en/docs/
#   * Official Russian Documentation: http://nginx.org/ru/docs/

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;

events {
    worker_connections 1024;
}

http {
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 4096;

    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;

###EDIT HERE###
#  include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*.conf;
}

Como arriba, un “#” se agregó un comentario a include conf.d línea e incluir sitios habilitados fue añadido.

Guarda el archivo (CTRL+O) y salir (CTRL+X) .

A continuación, cree su archivo de configuración de bloque de servidor. El nombre your_domain.conf se usará para el tutorial, pero puede llamarse como prefiera.

sudo nano /etc/nginx/sites-available/your_domain.conf

Puede pegar el siguiente código de ejemplo en el bloque. Este es solo un ejemplo de solo HTTP para pruebas básicas.

server {

 listen 80;
 listen [::]:80;

 server_name your_domain www.your_domain;
 root /var/www/your_domain/html;

  index index.html index.htm;

 location / {
  try_files $uri $uri/ =404;
 }
}

El ejemplo muestra que su servidor está escuchando dos nombres de servidor, “su_dominio” en el puerto 80.

Deberá cambiar el directorio raíz al nombre/ubicación del directorio raíz que creó.

Bloqueo de servidor Nginx habilitado

Debe vincular los archivos de configuración de los sitios disponibles a los sitios habilitados en su directorio Nginx para habilitar los bloques del servidor Nginx. Esto se puede hacer con el comando ln -s de la siguiente manera.

sudo ln -s /etc/nginx/sites-available/your_domain.conf /etc/nginx/sites-enabled/

Configuración final y ejecución de prueba

En la etapa final, deberá abrir su nginx.conf predeterminado. archivo.

sudo nano /etc/nginx/nginx.conf

Y descomente la siguiente línea.

server_names_hash_bucket_size 64;

El tamaño del depósito hash del nombre del servidor se cambia, ya que a veces surgen problemas al agregar servidores adicionales.

A continuación, pruebe su Nginx para asegurarse de que funciona antes de reiniciar correctamente.

sudo nginx -t

El resultado debería ser si no hay errores en la sintaxis:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Si tiene el siguiente resultado correcto, reinicie el servidor Nginx para que se realicen los cambios.

sudo systemctl restart nginx

Ahora abra su navegador de Internet y escriba el nombre de dominio del servidor. Deberías ver que tu bloque de servidor está activo.

Proteja Nginx con el certificado gratuito Let's Encrypt SSL

Idealmente, le gustaría ejecutar su Nginx en HTTPS usando un certificado SSL . La mejor manera de hacerlo es usar Let's Encrypt, una autoridad de certificación gratuita, automatizada y abierta dirigida por el Grupo de Investigación de Seguridad de Internet (ISRG) sin fines de lucro .

Instale el paquete certbot de la siguiente manera:

sudo dnf install python3-certbot-nginx -y

Una vez instalado, ejecute el siguiente comando para iniciar la creación de su certificado:

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d www.example.com

Esta configuración ideal incluye forzar redireccionamientos HTTPS 301, un encabezado de seguridad de transporte estricto y grapado OCSP. Solo asegúrese de ajustar el correo electrónico y el nombre de dominio a sus requisitos.

Ahora su URL será HTTPS://www.example.com en lugar de HTTP://www.example.com .

Si usa la antigua URL HTTP , se redirigirá automáticamente a HTTPS .

Opcionalmente, puede configurar un trabajo cron para renovar los certificados automáticamente. Certbot ofrece una secuencia de comandos que hace esto automáticamente, y primero puede probar para asegurarse de que todo funciona realizando una ejecución en seco.

sudo certbot renew --dry-run

Si todo funciona, abra su ventana crontab usando el siguiente comando de terminal.

sudo crontab -e

Por defecto, la mayoría de los sistemas Fedora no vienen con Cron instalado. Para instalarlo, use el siguiente comando.

sudo dnf install cronie -y

Abra crontab con el siguiente comando.

sudo crontab -e

A continuación, especifique la hora en que debe renovarse automáticamente. Esto debe verificarse diariamente como mínimo, y si es necesario renovar el certificado, el script no actualizará el certificado. Si necesita ayuda para encontrar un buen momento para configurar, use la herramienta gratuita crontab.guru.

00 00 */1 * * /usr/sbin/certbot-auto renew

Ahora guarde el archivo presionando (SHIFT) y (:) luego escribe (wa), que guarda el archivo, luego sale con el mismo método usando (qa) .

Debería ver el siguiente resultado en la terminal para ver si la adición de la nueva tarea fue exitosa.

crontab: installing new crontab

Gestión del servicio Nginx

Ahora que tiene Nginx ejecutándose correctamente en su servidor, algunas notas clave de administración son las siguientes.

Para detener el servidor web Nginx:

sudo systemctl stop nginx

Para iniciar el servidor web Nginx:

sudo systemctl start nginx

Para reiniciar el servidor web Nginx:

sudo systemctl restart nginx

Para recargar el servidor web Nginx (Para cambios menores que no requieren reiniciar) :

sudo systemctl reload nginx

Para deshabilitar Nginx en el arranque del servidor:

sudo systemctl disable nginx

Para iniciar Nginx en el arranque del servidor (Habilitado automáticamente en la instalación) :

sudo systemctl enable nginx

Cómo acceder a los registros del servidor Nginx

Directorio de registros de Nginx

De forma predeterminada, todos los registros de acceso/error de NGINX, a menos que los haya cambiado, se encuentran en el directorio de registro, que puede ver el siguiente comando.

Primero, navegue hasta el directorio de registros y enumere los archivos:

cd /var/log/nginx && ls -l

Debería encontrar los siguientes archivos de acceso y error:

Registro de acceso:

/var/log/nginx/access.log

Registro de errores:

/var/log/nginx/error.log

Para ver registros en tiempo real en su terminal usando el comando sudo tail -f /ubicación/de/ruta de registro.

Ejemplo:

sudo tail -f /var/log/nginx/access.log

Otra opción es imprimir la última X cantidad de líneas. Por ejemplo, X se reemplaza por 30 para imprimir 30 líneas agregando el indicador -n 30 .

sudo tail -f /var/log/nginx/access.log -n 30

Estos son solo algunos ejemplos de registros de lectura, y grep también puede ser útil.

Cómo configurar la rotación de registros de Nginx

Nginx instala automáticamente la rotación de registros y la configura de forma predeterminada, que es rotar diariamente. Puede cambiar esta configuración accediendo al archivo como se muestra a continuación.

sudo nano /etc/logrotate.d/nginx

A continuación, verá la misma estructura de archivos, si no similar. Puede modificar los contenidos aquí. En su mayoría, puede cambiar la cantidad de registros que desea mantener o pasar de diario a semanal. Esto debe dejarse en el valor predeterminado a menos que tenga necesidades específicas de requisitos de registro para software como el monitoreo fail2ban o similar.

/var/log/nginx/*.log {
  daily
  missingok
  rotate 14
  compress
  delaycompress
  notifempty
  create 0640 www-data adm
  sharedscripts
  prerotate
  if [ -d /etc/logrotate.d/httpd-prerotate ]; then \
  run-parts /etc/logrotate.d/httpd-prerotate; \
  fi \
  endscript
  postrotate
  invoke-rc.d nginx rotate >/dev/null 2>&1
  endscript
}

La configuración principal que probablemente querrá cambiar es la siguiente:

  • Diario – Esto se puede cambiar a Semanal, Mensual. Esto debe mantenerse a diario, o de lo contrario será difícil revisar el archivo de registro.
  • Rotar 14 – Esta es la cantidad de registros que debe mantener y eliminar, por lo que, como máximo, solo hay 14 registros, si solo desea conservar 7 días de registros, cambie esto a 7.

Se recomienda no tocar ninguna otra configuración a menos que sepa lo que está haciendo.

Cómo actualizar Nginx

Nginx se actualizará de forma predeterminada cuando una nueva versión llegue a los repositorios. Antes de actualizar, siempre se recomienda hacer una copia de seguridad de su directorio Nginx o, al menos, del nginx.conf expediente. Puede hacerlo con el siguiente comando.

Copia de seguridad de nginx.conf (muy recomendable):

sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx-backup.conf

Haz una copia de seguridad de toda tu carpeta Nginx si lo prefieres:

sudo cp /etc/nginx/ /etc/nginx-bkup

A continuación, ejecute el comando de actualización estándar.

sudo dnf upgrade --refresh

Si hay una actualización disponible, ejecútela.

Es posible que se le solicite esto durante una actualización o instalación, pero hacerlo manualmente de antemano es bastante esencial. Para configuraciones grandes de Nginx de varios sitios, sería aún más beneficioso realizar una copia de seguridad en algo como Github o Gitlab.

Cómo quitar (desinstalar) Nginx

Para eliminar Nginx si ya no lo usa, puede hacerlo con el siguiente comando:

sudo dnf autoremove nginx

Este comando también eliminará las dependencias no utilizadas que venían con la instalación.

Para restablecer el módulo nginx de la línea principal a sus valores predeterminados, use el siguiente comando.

sudo dnf modules reset nginx

Fedora
  1. Cómo instalar Spotify en Fedora 35

  2. Cómo instalar Slack en Fedora 35

  3. Cómo instalar CMake en Fedora 35

  4. Cómo instalar Grafana en Fedora 35

  5. Cómo instalar PHP 8 en Fedora 35

Cómo instalar MongoDB en Fedora 35

Cómo instalar Jenkins en Fedora 35

Cómo instalar Wine en Fedora 35

Cómo instalar Python en Fedora 35

Cómo instalar PostgreSQL en Fedora 35

Cómo instalar Docker en Fedora 35