Cómo configurar un servidor en Nginx para manejar solicitudes no coincidentes

Artículos Guías Manuales Sistemas Linux Windows Redes MySql Binario 0 Binario Cero

Para configurar Nginx de manera que devuelva un error 404 para todas las solicitudes que no coincidan con los sitios configurados, puedes seguir estos pasos:

  1. Abre el archivo de configuración de Nginx, que generalmente se encuentra en /etc/nginx/nginx.conf o en el directorio /etc/nginx/sites-available/ si tienes sitios configurados de manera separada.
  2. Asegúrate de tener una directiva de server para cada uno de tus sitios configurados. Para redirigir todo lo que no coincida con esos sitios a una página 404, puedes agregar una configuración "default" al final.
  3. Añade el siguiente bloque al final del archivo para manejar todas las solicitudes no configuradas:
server {
server_name _;


location / {
return 404;
}

listen 443 ssl http2 default_server;
ssl_certificate /etc/nginx/cert/nginx-selfsigned.crt;
ssl_certificate_key /etc/nginx/cert/nginx-selfsigned.key;


}
server {
listen 80 default_server;
server_name _; # Este servidor responde a todas las solicitudes no definidas.

# Devuelve un 404 para cualquier solicitud.
location / {
return 404;
}
}

Este bloque se encarga de redirigir todas las solicitudes que no coincidan con ningún sitio configurado a un error 404. La directiva default_server asegura que este bloque se aplique cuando no haya coincidencias con otros bloques server.

Hay que generar un certificado autofirmado:

Paso 1: Generar la clave privada

Primero, necesitas generar una clave privada que se usará para el certificado SSL.

openssl genpkey -algorithm RSA -out /etc/nginx/cert/nginx-selfsigned.key -aes256

Este comando genera una clave privada RSA y la guarda en /etc/nginx/cert/nginx-selfsigned.key. El uso de -aes256 cifra la clave privada para mayor seguridad.

Sin Contraseña y lo generamos.

Paso 2: Generar el certificado autofirmado

Luego, crea un certificado autofirmado usando la clave privada generada en el paso anterior:

openssl req -new -x509 -key /etc/nginx/cert/nginx-selfsigned.key -out /etc/nginx/cert/nginx-selfsigned.crt -days 365
  • Este comando genera el certificado en /etc/ssl/certs/nginx-selfsigned.crt y es válido por 365 días.
  • Durante la creación del certificado, te pedirá información como el país, la ciudad y el nombre de la organización. Dado que no tienes un dominio, puedes poner cualquier cosa, pero para un certificado válido lo más recomendable es usar un nombre que tenga sentido para ti, como localhost o algo similar.

En caso de haber puesto contraseña por error al certificado se la podemos quitar asi:

Eliminar la contraseña de la clave privada.

Si has creado la clave privada con una contraseña (usando -aes256), puede que Nginx no sea capaz de manejarla de manera automática. Para solucionar esto, puedes eliminar la contraseña de la clave privada con el siguiente comando:

openssl rsa -in /etc/nginx/certificados/nginx-selfsigned.key -out /etc/nginx/certificados/nginx-selfsigned.key

Este comando creará una nueva versión de la clave privada sin contraseña.

  1. Guarda el archivo y luego reinicia Nginx para que los cambios surtan efecto:
sudo systemctl restart nginx

Con esto, cualquier solicitud a tu servidor que no coincida con un bloque server previamente configurado devolverá un error 404.