GNU/Linux >> Tutoriales Linux >  >> Linux

25 comandos de Nginx que deben conocer los desarrolladores y administradores

Nginx es uno de los servidores web más populares entre los usuarios de Linux y BSD debido a su rico conjunto de funciones y su flexibilidad superior. Si es un desarrollador web, es probable que esté trabajando con Nginx o con el servidor Apache. Por lo tanto, es esencial tener una comprensión profunda de cómo funciona Nginx desde la línea de comandos. Afortunadamente, puede aumentar sus habilidades de DevOps dominando algunos comandos de Nginx. Nuestros editores han seleccionado estos comandos de uso frecuente para usted y han proporcionado una discusión completa para los administradores de Linux que comienzan. Continúe leyendo para obtener más información sobre estos comandos.

Comandos útiles de Nginx para administradores de Linux

A diferencia de muchos servidores web, Nginx se ocupa de la configuración del servidor utilizando únicamente el archivo de configuración. Por lo tanto, solo hay unos pocos parámetros de línea de comandos que puede utilizar. Esto es útil ya que los administradores pueden encontrar rápidamente los comandos que están buscando. A continuación se muestran algunos comandos Nginx ampliamente utilizados que puede usar hoy.

Instalación del servidor web Nginx en Linux

Nginx ofrece varios paquetes de instalación para diferentes versiones de Linux. Usted puede encontrarlos aquí. También puede instalar Nginx directamente usando su administrador de paquetes, como se ilustra a continuación.

$ sudo apt install nginx                                # Ubuntu
$ sudo dnf install nginx                                # Fedora
$ sudo yum install epel-release && yum install nginx    # RHEL and CentOS

También es posible compilar Nginx desde la fuente. Encontrará detalles al respecto en esta guía.

1. Inicie el servidor Nginx

Es muy fácil iniciar el servidor web Nginx, como se muestra a continuación. Simplemente use uno de los siguientes comandos para invocar el servidor web estándar.

$ sudo service nginx start
- -

Cuando emite este comando, el script de inicio System V inicia Nginx. Si está ejecutando Nginx desde un sistema basado en systemd como Ubuntu Linux 16.04LTS y superior, deberá usar el siguiente comando.

$ sudo systemctl start nginx

Debería obtener una respuesta que muestre si el servidor se inició correctamente o no. Otro método simple pero efectivo es llamar a Nginx directamente usando la ruta binaria, como se muestra a continuación.

$ sudo /usr/bin/nginx

2. Detener servidor Nginx

También puede detener un servidor Nginx en ejecución utilizando métodos similares a los que se muestran arriba. Sin embargo, recuerde que cuando detiene un servidor Nginx en ejecución, todos los procesos del sistema asociados con él se eliminan. Terminará incluso si tiene conexiones activas.

$ sudo service nginx stop

Este comando detendrá el proceso de Nginx en los sistemas que usan el script de inicio System V. Para máquinas basadas en systemd, se puede usar el siguiente comando.

$ sudo systemctl stop nginx

Sin embargo, estos comandos aún pueden tomar una cantidad de tiempo considerable en servidores ocupados. El siguiente comando demuestra cómo detener el servicio Nginx de una manera más rápida.

$ sudo killall -9 nginx

3. Salir del servidor Nginx

Salir de un servidor Nginx es similar a detener uno, con una clara diferencia. El demonio Nginx adopta un enfoque elegante para salir en el sentido de que no interrumpirá ninguna conexión activa. Por lo tanto, las solicitudes de sus clientes se atenderán como se espera antes de cerrarse.

$ sudo service nginx quit

Use este comando para salir de su servidor Nginx desde el shell de Linux. Los usuarios que ejecutan una máquina basada en systemd pueden utilizar el siguiente comando para realizar este trabajo.

$ sudo systemctl quit nginx

También puede usar uno de los siguientes comandos de Nginx para salir de un servidor en ejecución.

$ sudo nginx -s quit
$ sudo kill -QUIT $( cat /usr/local/nginx/logs/nginx.pid )

4. Reinicie el servidor Nginx

Cuando reinicia el servidor, el proceso de Nginx simplemente se detiene y luego comienza de nuevo. Puede usar uno de los siguientes comandos para reiniciar su demonio Nginx desde la línea de comandos.

$ sudo service nginx restart

Este comando reiniciará el servidor Nginx utilizando el script de inicio System V. Puede usar systemctl por hacer esto en un sistema basado en systemd como las versiones más recientes de Ubuntu.

$ sudo systemctl restart nginx

También puede hacerlo de otra manera, como se muestra en el siguiente ejemplo.

$ sudo /etc/init.d/nginx restart

Si ha compilado Nginx desde la fuente, puede usar el siguiente comando.

$ sudo /usr/local/nginx/sbin/nginx -s restart

5. Recargar servidor Nginx

Recargar un servidor Nginx difiere ligeramente de reiniciarlo. Cuando recarga un servidor, Nginx se apagará de manera elegante. Lo que esto significa es que el demonio Nginx primero terminará, luego analizará el archivo de configuración en busca de cambios intentados e iniciará el nuevo proceso de trabajo sin interrumpir las operaciones.

$ sudo service nginx reload
$ sudo systemctl status nginx

El primer comando usa el script de inicio de System V, mientras que el último comando es para distribuciones de Linux basadas en systemd. También puede invocar el siguiente script para realizar este trabajo.

$ sudo /etc/init.d/nginx reload

Debe usar el siguiente comando si ha compilado Nginx desde el código fuente.

$ sudo /usr/local/nginx/sbin/nginx -s reload

El siguiente comando es otra forma práctica de reiniciar correctamente su servidor Nginx.

$ sudo nginx -s reload

6. Comprobar el estado de Nginx

A veces, es posible que desee ver el estado actual de su servidor Nginx antes de realizar cualquier operación en ellos. Esto se puede hacer muy rápidamente usando uno de los siguientes comandos. Recuerda sudo su comando o cambie al usuario root.

$ sudo service nginx status

Como se muestra en algunos comandos anteriores, este comando funciona al inicializar el script de inicio de System V. Puede usar el siguiente comando para los sistemas que usan systemd en su lugar.

$ systemctl status nginx

Otra forma de hacer esto sería usar el script Nginx init.d directamente, como lo demuestra el siguiente comando.

$ sudo /etc/init.d/nginx status

Si Nginx se compila a partir del código fuente, entonces el siguiente comando.

$ sudo /usr/local/nginx/sbin/nginx -s status

7. Comprobar la configuración de Nginx

Dado que existe una amplia gama de capacidades de personalización de Nginx, los administradores de red a menudo necesitan modificar el archivo de configuración para agregar o desbloquear nuevas funciones. Sin embargo, siempre debe probar su archivo de configuración en busca de posibles errores. De lo contrario, los usuarios maliciosos podrían aprovechar las fallas en la configuración de su servidor.

$ sudo nginx -t

Este es un comando simple que hace este trabajo por usted. Cuando ejecuta esto, básicamente le está diciendo a Nginx que verifique el archivo de configuración en busca de errores de sintaxis y se abstenga de ejecutar el servidor. Puede utilizar el siguiente comando para volcar el resultado de la prueba de configuración en la consola de su terminal.

$ sudo nginx -T

También puede usar uno de los siguientes comandos de Nginx para probar la configuración de su servidor Nginx.

$ sudo service nginx configtest   # System V Init
$ sudo systemctl config nginx     # systemd-based

8. Enviar señales a Nginx

Los administradores pueden enviar varias señales útiles al demonio Nginx. Necesitarás usar la -s bandera para enviar una señal a Nginx, seguida de la señal real. Ya habíamos visto señales en acción cuando lo usamos para salir y recargar nuestro servidor Nginx. Aquí, los estamos especificando en orden.

$ sudo nginx -s stop     # stops a running Nginx server
$ sudo nginx -s quit     # quits Nginx server
$ sudo nginx -s reload   # gracefully restarts Nginx
$ sudo nginx -s reopen   # reopens server log file

Sin embargo, su versión de Nginx debe ser al menos 0.7.53 o más. De lo contrario, no podrá enviar señales a sus procesos de Nginx.

9. Mostrar información de la versión de Nginx

Algunas características más nuevas de Nginx solo están disponibles para versiones recientes. Por lo tanto, los administradores pueden enfrentar algunos problemas de compatibilidad en los servidores heredados. Puede determinar fácilmente su versión de Nginx para ver si sus problemas tienen algo que ver con la versión del servidor o no.

$ sudo service nginx -v       # uses System V Init
$ sudo systemctl -v nginx     # for systemd-based distributions

Los siguientes comandos se pueden usar para mostrar información adicional sobre su instalación de Nginx, como las variables de configuración y la versión del compilador.

$ sudo service nginx -V
$ sudo systemctl -V nginx

Además, si está ejecutando un servidor Linux basado en Ubuntu o Debian, puede usar el siguiente comando para averiguar su versión de Nginx.

$ sudo apt-cache policy nginx

10. Mostrar página de ayuda

La página de ayuda de Nginx es un gran punto de referencia tanto para principiantes como para administradores de Linux experimentados. Puede usar uno de los siguientes comandos de Nginx para ver esta referencia desde el emulador de terminal de Linux.

$ sudo service nginx -h     # uses System V Init
$ sudo systemctl -h nginx   # for systemd-based distributions

También puede usar los siguientes comandos para hacer este trabajo.

$ sudo service nginx -?     # uses System V Init
$ sudo systemctl -? nginx   # for systemd-based distributions

Hacer referencia a la página de ayuda siempre es una excelente opción, ya que permiten un vistazo rápido a las opciones disponibles para el usuario.

11. Usar configuración alternativa

Hay una lista interminable de capacidades de personalización que ofrecen los servidores web Nginx. Los administradores pueden modificar fácilmente el archivo de configuración de Nginx para agregar funcionalidades adicionales a su servidor. El archivo de configuración predeterminado de Nginx en la mayoría de los sistemas es /etc/nginx/nginx.conf. Sin embargo, a menudo es una buena práctica implementar primero sus personalizaciones en un archivo de configuración alternativo.

$ sudo nginx -c ~/test.conf

Tenga en cuenta que asumimos que su nuevo archivo de configuración se llama test.conf. Sustituya esta parte por el nombre real de su archivo de configuración. Ahora puede probar sus nuevas configuraciones usando el siguiente comando.

$ sudo nginx -t -c ~/test.conf

También puede indicarle a Nginx que busque la configuración predeterminada en un directorio diferente al compilar desde la fuente. Simplemente pase este directorio al configurar la instalación.

# ./configure --conf-path=/etc/some/other/nginx.conf

12. Suprimir mensajes que no sean de error

Es normal recibir mensajes de error cuando está probando nuevas configuraciones. Sin embargo, también obtendrá mucha información irrelevante al verificar sus personalizaciones. Afortunadamente, el demonio Nginx ofrece una opción simple para suprimir estos mensajes que no son de error, como se muestra a continuación.

$ sudo nginx -q -t -c ~/test.conf

Este comando probará un archivo de configuración personalizado llamado test.conf y omitirá información innecesaria de la salida. Es bastante útil para tareas de administración de servidores remotos.

13. Cambiar directiva global

La directiva global contiene todos los parámetros de configuración disponibles para su servidor Nginx. Es una de las secciones más sensibles de su servidor web y requiere mucha atención. La -g La opción permite a los administradores definir directivas Nginx personalizadas para sus servidores web.

$ sudo nginx -g "pid /var/run/test.pid; worker_processes 2;"

Este comando especifica las directivas globales de Nginx para PID y define la cantidad de procesos de trabajo, 2 en este caso. Ahora podemos probar esto usando el archivo de configuración alternativo usado anteriormente.

$ sudo nginx -t -c ~/test.conf -g "pid /var/run/test.pid; worker_processes 2;"

14. Cambiar ruta de prefijo de Nginx

La ruta del prefijo contiene todos los archivos utilizados por su servidor web Nginx. También es el mismo directorio utilizado por la configuración para establecer las rutas relativas (excepto las fuentes de la biblioteca). De forma predeterminada, Nginx usa el directorio /usr/local/nginx como prefijo. El siguiente comando demuestra cómo podemos anular esto desde la línea de comandos.

$ sudo nginx -p /path/to/new/prefix

La -p flag nos permite pasar la nueva ubicación del prefijo. A menudo resulta útil cuando se prueban nuevos servidores. Sin embargo, esta opción no está disponible para servidores Nginx anteriores a la versión 0.7.53.

15. Compruebe el módulo stub_status

El stub_status El módulo expone algunas métricas muy importantes sobre Nginx. Los administradores a menudo lo usan para monitorear sus servidores de correo Linux o servidores proxy. Aunque todos los binarios de Nginx preconstruidos vienen con este módulo, es posible que su servidor Nginx no tenga esto si ha compilado Nginx desde la fuente. Puede usar el siguiente comando para probar si lo tiene o no.

$ sudo nginx -V 2>&1 | grep --color -- --with-http_stub_status_module

Si descubre que le falta este módulo, siempre puede reconstruir Nginx desde la fuente. Simplemente incluya el –with-http_stub_status_module parámetro al configurar Nginx, como se muestra a continuación.

$ ./configure --with-http_stub_status_module

16. Comprobar la ruta de Nginx

Hay varios comandos de Nginx para verificar la ruta de su instalación de Nginx. Al igual que los comandos de terminal Linux cotidianos, siempre puede usar el comando which/whereis para verificar la ruta de Nginx.

$ which nginx
$ whereis nginx

Los comandos anteriores mostrarán todas las ubicaciones del sistema que contienen archivos relacionados con su configuración de Nginx. Puede hacer esto de otra manera usando el comando ps y buscando la información requerida.

$ ps aux | grep nginx

Ahora debería ver claramente la ubicación de su demonio Nginx. Esto es muy útil para los desarrolladores que no tienen privilegios de bajo nivel en la máquina del servidor.

17. Localice el PID de Nginx

El PID o ID de proceso es un número único que se utiliza para distinguir procesos en sistemas Linux y similares a Unix. Podemos enviar varias señales a nuestro servidor Nginx utilizando el PID apropiado. Este PID se puede encontrar usando uno de los siguientes comandos.

$ ps aux | grep [n]ginx
$ pgrep nginx
$ cat /run/nginx.pid

Entonces podemos usar pgrep o el comando vanilla grep junto con ps. No te preocupes si no entiendes cómo funciona "grep". Ya hemos publicado una guía intensiva en recursos sobre los comandos grep de Linux.

18. Buscar archivos de registro

Los archivos de registro contienen mucha información valiosa tanto para los administradores del sistema como para los desarrolladores. Nginx tiene dos archivos de registro predeterminados que consisten en access.log y error.log documentos. Estos se encuentran en /var/log y se pueden ver con el siguiente comando.

$ ls /var/log/nginx/*.log

Ahora debería ver los archivos de registro mencionados anteriormente. Como sugiere su nombre, access.log contiene información sobre los visitantes de su sitio y error.log contiene advertencias/detalles sobre configuraciones incorrectas. Sin embargo, deberá habilitar estos dos registros desde su archivo de configuración de Nginx antes de poder usarlos.

19. Establecer hosts virtuales

Los hosts virtuales permiten a los administradores de servidores ejecutar más de un sitio web en una sola máquina de servidor. Esto suele ser útil ya que puede compartir sus procesos informáticos para ejecutar varios sitios al mismo tiempo. Sin embargo, el término host virtual generalmente se asocia con servidores Apache. Se conocen como “Bloques de servidor ” en el mundo de Nginx.

$ sudo ln -s /etc/nginx/sites-available/YOURSITE.com /etc/nginx/sites-enabled/YOURSITE.com

Puede habilitar fácilmente hosts virtuales en un servidor Nginx utilizando este enlace simbólico simple. Simplemente elimine el enlace simbólico si desea deshabilitar los hosts virtuales.

20. Ver módulos de Nginx compilados

Como ha visto en algunos comandos Nginx anteriores, cuando instala el daemon, también se instalan algunos módulos esenciales. Podemos ver fácilmente estos módulos Nginx usando el siguiente comando.

$ sudo 2>&1 nginx -V | tr -- - '\n' | grep _module

Este comando aprovecha varias herramientas de línea de comandos de Linux y filtra información irrelevante para mostrar solo los módulos. Dado que Nginx tiene una gran cantidad de módulos, este comando puede ser útil para verificar qué módulos están compilados para su servidor.

21. Habilitar/deshabilitar el servicio Nginx

Habilitar el servicio Nginx permite que el servidor se inicie automáticamente durante el tiempo de arranque. Es esencial para servidores dedicados porque, de lo contrario, las solicitudes de los usuarios podrían verse interrumpidas. Podemos habilitar muy fácilmente Nginx para que se inicie automáticamente usando el siguiente comando.

$ sudo service nginx enable     # System V Init
$ sudo systemctl enable nginx   # systemd-based systems

Estos comandos simples pero efectivos asegurarán que el tiempo de inactividad de su servidor se reduzca tanto como sea posible. También puede desactivar el inicio automático si lo desea. Simplemente use uno de los siguientes comandos.

$ sudo update-rc.d -f nginx disable
$ sudo systemctl disable nginx

22. Actualice Nginx sobre la marcha

Nginx permite a los administradores actualizar el archivo binario y/o de configuración sobre la marcha. Esto significa que las solicitudes de sus clientes no se interrumpirán debido a las actualizaciones del servidor. Para hacer esto, primero, necesitamos ubicar el PID del proceso maestro de Nginx. Podemos hacerlo usando un comando simple que ya hemos demostrado.

$ cat /run/nginx.pid

Su nuevo binario Nginx ya debería estar listo. Genere un nuevo conjunto de procesos maestros/trabajadores de Nginx que usen el nuevo binario a través del siguiente comando.

$ sudo kill -s USR2 `cat /run/nginx.pid`

Ahora elimine los procesos de trabajo utilizados por el primer proceso maestro con el siguiente comando.

$ sudo kill -s WINCH `cat /run/nginx.pid.oldbin`

Sígalo eliminando el antiguo proceso maestro.

$ sudo kill -s QUIT `cat /run/nginx.pid.oldbin`

23. Configurar Nginx en Chroot Jail

Una cárcel chroot para su servidor Nginx proporcionará una capa adicional de seguridad en caso de posibles robos. Los administradores suelen utilizar esta técnica para asegurarse de que sus servidores estén aislados y seguros en una pequeña sección del sistema de archivos de Linux. Use los siguientes comandos para configurar su servidor Nginx dentro de una cárcel chroot.

# D=/nginx
# mkdir -p $D
# mkdir -p $D/etc
# mkdir -p $D/dev
# mkdir -p $D/var
# mkdir -p $D/usr
# mkdir -p $D/usr/local/nginx
# mkdir -p $D/tmp
# chmod 1777 $D/tmp
# mkdir -p $D/var/tmp
# chmod 1777 $D/var/tmp
# mkdir -p $D/lib64
# ls -l /dev/{null,random,urandom}
# /bin/cp -farv /usr/local/nginx/* $D/usr/local/nginx

Deberá ejecutarlos como root. Ahora descubra las bibliotecas compartidas usando el siguiente comando.

# ldd /usr/local/nginx/sbin/nginx

Copie todas las bibliotecas una por una, como se muestra a continuación.

# cp /lib64/libpcre.so.0 $D/lib64

También deberá copiar /etc y algunos otros directorios.

# cp -fv /etc/{group,prelink.cache,services,adjtime,shells,gshadow,shadow,hosts.deny,localtime,nsswitch.conf,nscd.conf,prelink.conf,protocols,hosts,passwd,ld.so.cache,ld.so.conf,resolv.conf,host.conf} $D/etc

# cp -avr /etc/{ld.so.conf.d,prelink.conf.d} $D/etc

Tu chroot jail ahora está listo para Nginx. Simplemente elimine el servicio anterior e inicie el nuevo con el siguiente comando.

# /usr/sbin/chroot /nginx /usr/local/nginx/sbin/nginx -t

24. Ejecute Nginx dentro de Docker

Los contenedores Docker se han vuelto extremadamente populares debido a su flexibilidad y rendimiento robusto. Puede crear y ejecutar fácilmente su servidor web Nginx desde dentro de un contenedor docker. El siguiente comando extrae la imagen oficial de Nginx y crea una instancia de servidor usando la configuración predeterminada.

$ docker run --name nginx-server -P -d nginx

Puede mantener el almacenamiento persistente con el siguiente comando simple.

$ sudo docker run --name nginx-server -v /var/www:/usr/share/nginx/html:ro \

-v /var/nginx/conf:/etc/nginx:ro -P -d nginx

Puede encontrar más comandos útiles de Docker en esta publicación. Échele un vistazo si está buscando información específica de Docker.

25. Ejecute Nginx dentro de LXD

LXD es aclamado como el contenedor de Linux de próxima generación y ofrece un asombroso conjunto de funciones. También puede usar Nginx a través de contenedores LXD. Eche un vistazo a los siguientes comandos de Nginx para LXD.

$ sudo lxc launch ubuntu:18.04 nginx-server
$ sudo lxc exec nginx-server -- sudo --user ubuntu --login
$ sudo apt update
$ sudo apt install -y nginx
$ sudo systemctl reload nginx

Primero, creamos un contenedor llamado nginx-server y luego iniciamos un shell en ese contenedor. Luego actualizamos la lista de paquetes e instalamos el servidor web Nginx dentro de ese contenedor. El último comando simplemente recarga el servidor.

Pensamientos finales

Hay muchas características sorprendentes que ofrece Nginx, y los nuevos usuarios a menudo se sienten abrumados por sus capacidades. Afortunadamente, puede ganar una gran confianza si solo conoce algunos comandos básicos de Nginx. Es por eso que nos tomamos la libertad de presentarte estos asombrosos comandos. Hemos cubierto no solo los comandos básicos, sino también algunos trucos de línea de comandos avanzados y más potentes. Con suerte, sentirá más autoridad sobre sus habilidades de Nginx una vez que esté acostumbrado a estos comandos. Háganos saber sus pensamientos en la sección de comentarios a continuación y siga visitando para obtener más guías sobre servidores Linux.


Linux
  1. Prácticas recomendadas de DNS para seguridad y rendimiento

  2. Una guía para ejecutar un proxy inverso para HTTP(S), SSH y MySQL/MariaDB usando NGINX

  3. 25 comandos esenciales de Vim para navegar y editar

  4. 20 ejemplos de comandos OpenSSL que debes conocer

  5. Buscar actualizaciones de Windows en Windows Server 2016 y 2019

50 comandos esenciales de Nmap para administradores de sistemas

40 comandos git útiles para administradores y desarrolladores de Linux

20 cosas esenciales que debe saber si está en el servidor web Nginx

Las 5 mejores distribuciones de Linux para desarrolladores y programadores

Los más de 50 comandos principales de Linux que DEBE conocer

Cómo configurar un servidor NGINX RTMP para transmisión