ENTRAR
UNIRSE AL CLUB

NGINX en Ubuntu 20.04

Marçal Alarcón

-

15 enero 2022

-

0.0/5

Bienvenido a este tutorial, donde aprenderás a instalar y configurar NGINX en Ubuntu 20.04

¿Empezamos?

1. Instalar NGINX en Ubuntu 20.04

Para instalar NGINX en Ubuntu 20.04 necesitamos abrir la terminal y ejecutar los siguientes comandos:

Paso2Entrar en modo Root

sudo su

Paso2Actualizar el directorio de paquetes de Ubuntu.

apt-get update

Paso2Instalamos NGINX con el siguiente comando:

apt install nginx

Paso2Comprobamos que funcione bien…

systemctl status nginx

Al ejecutar el comando anterior, te debe de aparecer un mensaje como este:

Si nos aparece “active (running)”, significa que el servidor está funcionando bien.

Por otra parte, si entramos en el navegador con la url de “localhost”, podemos ver nuestra la página de por defecto de NGINX.

Perfecto, ya tenemos instalado NGINX en Ubuntu 20.04. En la próxima sección te enseñaré la configuración por defecto de NGINX.

TUTORIAL RECOMENDADO PARA Ubuntu

Instalar Oracle 11g en Ubuntu 20.04

2. Configuración por defecto de NGINX

Toda la configuración de NGINX la haremos a través de la terminal (cmd).

Ver sitios disponibles:

ls /etc/nginx/sites-available

Aquí nos aparece una lista de los sitios que tenemos actualmente disponibles. Siempre por defecto tenemos el default.

Ver sitios activos:

ls /etc/nginx/sites-enabled

Aquí nos aparece una lista de los sitios que tenemos actualmente activos (que son públicos en nuestro servidor). Siempre por defecto tenemos el default. Más adelante en esta guía, aprenderemos a activar y desactivar los sitios de nuestro servidor.

Carpeta pública del sitio default:

Cada sitio que creemos, deberá de tener un directorio (que será publico). Dentro de ese directorio, se añadirán todos los archivos que queremos que se vean en nuestra web.

Por defecto la carpeta pública del sitio default (sitio que se crea por defecto al instalar NGINX) se encuentra en:

Archivo de configuración de un sitio:

En este caso, vamos a ver el archivo de configuración del sitio default. Para ello debemos de ejecutar el siguiente comando para abrirlo:

nano /etc/nginx/sites-enabled/default

Lo que realmente, el archivo de configuración de cada sitio web, se encuentra dentro de su propio directorio.

Sigue leyendo y descubre cómo funciona este archivo por dentro.

TUTORIAL RECOMENDADO PARA Ubuntu

Instalar Apache 2.4.46 en Ubuntu 21.04

3. Crear un nuevo sitio en NGINX

En esta sección, vamos a aprender a crear más de un sitio en un mismo servidor. Esto lo conseguiremos gracias a los servidores virtuales (virtual hosts) que nos proporciona NGINX.

Paso2Ejecutamos el siguiente comando para crear el directorio para el sitio:

mkdir -p /var/www/example

Paso2Le damos los permisos de usuario al directorio que acabamos de crear:

chown -R nombreusuario:nombreusuario /var/www/example

En donde pone “nombreusuario” debes de colocar el nombre de tu usuario de Ubuntu. En mi caso el comando sería:

chown -R mab55:mab55 /var/www/example

Paso2Le damos los siguientes permisos al directorio:

chmod -R 755 /var/www/example

Paso2Creamos un archivo html de ejemplo dentro del directorio:

echo "Texto para example.com" > /var/www/example/index.html

4. Configurar un sitio en NGINX

Una vez creado el directorio y los ficheros para el sitio, vamos a configurar el sitio. Para ahorrar tiempo, vamos a copiar la configuración del sitio por defecto (default) y la adaptaremos.

Paso2Nos movemos a la carpeta de los sitios disponibles:

cd /etc/nginx/sites-available

Paso2Copiamos el sitio por defecto y le colocamos el nombre de nuestro sitio

cp default example

Paso2Editamos con Nano, el fichero que acabamos de copiar.

nano example

Paso2Dejamos el fichero de la siguiente forma:

# Default server configuration
#
server {
listen 80;
listen [::]:80;

# SSL configuration
#
# listen 443 ssl default_server;
# listen [::]:443 ssl default_server;
#
# Note: You should disable gzip for SSL traffic.
# See: https://bugs.debian.org/773332
#
# Read up on ssl_ciphers to ensure a secure configuration.
# See: https://bugs.debian.org/765782
#
# Self signed certs generated by the ssl-cert package
# Don't use them in a production server!
#
# include snippets/snakeoil.conf;

root /var/www/example;

# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html;

server_name example.com;

location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}

# pass PHP scripts to FastCGI server
#
#location ~ \.php$ {
# include snippets/fastcgi-php.conf;
#
# # With php-fpm (or other unix sockets):
# fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
# # With php-cgi (or other tcp sockets):
# fastcgi_pass 127.0.0.1:9000;
#}

# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}


# Virtual Host configuration for example.com
#
# You can move that to a different file under sites-available/ and symlink that
# to sites-enabled/ to enable it.
#
#server {
# listen 80;
# listen [::]:80;
#
# server_name example.com;
#
# root /var/www/example.com;
# index index.html;
#
# location / {
# try_files $uri $uri/ =404;
# }
#}

Aquí debemos de:

  • Quitar el default-server de las líneas 4 y 5.
  • Añadir la ruta de la carpeta del sitio (en mi caso /var/www/example) que se encuentra en la línea 23.
  • Añadir en server_name, el nombre de nuestro dominio (en mi caso example.com) que se encuentra en la línea 28.

Guardamos los cambios y listo 😉

5. Estados de los sitios en NGINX

Cómo hemos visto anteriormente, en la carpeta de “sites-available” tenemos todos los sitios disponibles. Esos sitios no están públicos. Para saber los sitios que tenemos públicos debemos de ir a la carpeta “sites-enabled”:

cd /etc/nginx/sites-enabled

Por defecto, solo tendrás activado el sitio por defecto (default). Pero claro, lo que necesitas es que se active el sitio “example”, que es el sitio que hemos creado y configurado en los pasos anteriores… Para ello debemos de crear un enlace simbólico con el siguiente comando:

ln -s /etc/nginx/sites-available/example .

Ahora lo que haremos es eliminar el sitio por defecto con el siguiente comando:

rm default

Antes de reiniciar el servidor, debemos de comprobar que la sintaxis esté bien escrita. Para ello ejecutaremos el siguiente comando:

nginx -t

Una vez comprobado que todo esté bien, vamos a reiniciar el servidor para aplicar los cambios:

nginx -s reload

6. Configurar dominio

Antes de tener nuestro sitio listo, podemos mostrar el sitio a través de un dominio (de forma local), para ello debemos de entrar en el fichero de “hosts”:

nano /etc/hosts

Dentro de este archivo, añadiremos el dominio (en mi caso example.com) en la línea 2 del documento:

127.0.0.1 localhost
127.0.1.1 mab55-VirtualBox example.com

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

Para aplicar los cambios reiniciamos el servidor:

nginx -s reload

7. Comprobar sitio

Ha llegado la hora de probar el sitio que acabamos de crear.

Para probar nuestro sitio, debemos de abrir el navegador y entrar en el dominio que hemos configurado anteriormente.

Si todo va como tiene que ir, nos debe de aparecer nuestro archivo html que hemos creado anteriormente.

8. Crear nuestro propio certificado SSL

Una vez nuestro sitio funciona, vamos a darle un poco más de seguridad añadiéndole un certificado SSL (no seguro porque lo generamos nosotros).

Empezaremos creando nuestro propio certificado SSL, siguiendo los siguientes pasos:

Paso2Generar el fichero .key:

openssl genrsa -out server.key 1024

Paso2Generamos el fichero server.csr a partir del fichero .key:

openssl req -new -key server.key -out server.csr

Rellenamos nuestra información personal…

Paso2Comprobamos que se hayan creado correctamente ambos ficheros (el fichero .csr y .key):

ls -l

Paso2Enlazamos los 2 ficheros para generar el certificado SSL:

openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

Paso2Creamos el siguiente directorio para añadir los certificados dentro:

mkdir /etc/nginx/ssl

Paso2Creamos el siguiente directorio para añadir los certificados dentro:

chmod 700 /etc/nginx/ssl

Paso2Copiamos los dos ficheros a /etc/nginx/ssl/.

cp server.crt /etc/nginx/ssl/
cp server.key /etc/nginx/ssl/

Paso2Reiniciamos el servidor para aplicar los cambios:

nginx -s reload
TUTORIAL RECOMENDADO PARA Ubuntu

Activar y desactivar módulos de Apache Ubuntu Server 20.04

9. Configurar certificado SSL

Con los certificados que hemos creado en el paso anterior, ahora los vamos a configurar con nuestro sitio.

Paso2Entramos dentro del fichero del sitio

nano /etc/nginx/sites-aviable/example

Paso2Dejamos el archivo de la siguiente forma:

# Default server configuration
#
server {
listen 80;
listen [::]:80;
server_name www.example.com
return 301 https://$server_name$request_url;

}

server {
listen 443 ssl;
server_name www.example.com;

ssl_certificate /etc/nginx/ssl/example.crt;
ssl_certificate_key /etc/nginx/ssl/example.key;
# SSL configuration
#
# listen 443 ssl default_server;
# listen [::]:443 ssl default_server;
#
# Note: You should disable gzip for SSL traffic.
# See: https://bugs.debian.org/773332
#
# Read up on ssl_ciphers to ensure a secure configuration.
# See: https://bugs.debian.org/765782
#
# Self signed certs generated by the ssl-cert package
# Don't use them in a production server!
#
# include snippets/snakeoil.conf;

root /var/www/example;

# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html;

server_name example.com;

Paso2Reiniciamos el servidor y listo.

nginx -s reload
TUTORIAL RECOMENDADO PARA Ubuntu

Crear DevWeb en Apache de Ubuntu Server 20.04

Hasta aquí este tutorial de NGINX. Para cualquier duda puedes escribirme en el formulario de contacto pulsando aquí.

Un saludo Mab55

Share on facebook
Facebook
Share on twitter
Twitter
Share on pinterest
Pinterest
Share on whatsapp
WhatsApp
Share on telegram
Telegram
Share on reddit
Reddit
Share on email
Email

Marçal Alarcón Brugal

Soy Técnico en Desarrollo de Aplicaciones Web con más de 5 años de experiencia en el sector informático. En los últimos años, me he centrado en enseñar mis conocimientos de informática a través de cursos, tutoriales… 

# ¿Te ha sido útil? Escribe una reseña

{{ reviewsTotal }} Review
{{ reviewsTotal }} Reviews
{{ options.labels.newReviewButton }}
{{ userData.canReview.message }}

📕 Tutoriales

📕 Tutoriales

🔸 Linux

🔹 Mac

🔸 Windows

También te puede interesar

Crear un servidor SSH con Ubuntu Server 20.04

0.0/5

Activar y desactivar módulos de Apache Ubuntu Server 20.04

0.0/5
Descubre que son y aprende a activar y desactivar módulos de Apache en Ubuntu Server 20.04…

Configurar fichero Netplan en Ubuntu Server 20.04

0.0/5
Configura de forma rápida el fichero de configuración Netplan en Ubuntu Server 20.04. En este tutorial…

Autenticación y autorización en Apache Ubuntu Server 20.04

5/5
Protege los directorios de Apache con usuario y contraseña. En este tutorial aprenderás de tres formas diferentes…

Crear DevWeb en Apache de Ubuntu Server 20.04

0.0/5

Instalar Apache 2.4.46 en Ubuntu 21.04

5/5
En este minitutorial, aprenderás a instalar Apache en Ubuntu 21.04. Con Apache podremos crear nuestro propio servidor web de forma simple…
Este contenido está restringido, SOLO está disponible para los miembros del club de Flota Digital.