Linux

Instalar y configurar el proxy Nginex.

Este paso es quizá el de mayor atención debido a la estructura y sintaxis de las instrucciones propias del paquete.

Mani MacmedAug 08

La primer acción es actualizar los repositorios y posteriormente instalar el paquete. En las distribuciones de Debian o Ubuntu, los comandos son:

  sudo apt update
  sudo apt install nginx

Es posible usar apt-get en su lugar. En otras distribuciones se deberán emplear los administradores de paquetes correspondientes.

Este paso es quizá el de mayor atención debido a la estructura y sintaxis de las instrucciones propias del paquete. Un error de sintaxis o una directiva mal colocada, impedirá que el reverse proxi reenvíe correctamente las peticiones HTTP a la aplicación, imposibilitando salir a Internet. Situación por demás frustrarte para el desarrollador.

Recordemos que en el caso de las aplicaciones ASP.NET Core, se debe emplear Nginx como proxi inverso en vez de emplearlo como web server. En ese sentido, las configuraciones deberán enfocarse a ese fin. Nginex utiliza un archivo de configuración nombrado nginx.conf en la ubicación /etc/nginx/. Este archivo contiene Directivas o Bloques de Directivas en la forma Par campo – valor, separados por al menos un espacio en blanco.

Un ejemplo es la siguiente sección del archivo:

http {
	##
	# Basic Settings
	##
	sendfile on;
	tcp_nopush on;
	types_hash_max_size 2048;
	# server_tokens off;
	# server_names_hash_bucket_size 64;
	# server_name_in_redirect off;
	include /etc/nginx/mime.types;
	default_type application/octet-stream;
	##
	# SSL Settings
	##
	ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # Dropping SSLv3, ref: POODLE
	ssl_prefer_server_ciphers on;
	##
	# Logging Settings
	##
	access_log /var/log/nginx/access.log;
}

En donde se describen algunas directivas para el protocolo HTTP. Las linead que inician con ‘#’ son comentarios. Prácticamente el archivo de configuración en su totalida está configurado para que los administradores los tomen como guía.

De igual manera, Nginx contiene dos carpetas importantes: /sites-available/ y /sites-enabled/, en dodnde se depositas archivos de configuración específicos para los diferentes sitios a publicar por el servidor. Por defecto, la instación viene con un archivo default que deberá ser modificado con un editor de texto (nano, vim) para establecer los parámetros particulares de cada sitio como: nombre del sitio, dirección ip, puertos, etc.

Un ejemplo es la siguiente sección del archivo:

# Default server configuration
#
server {
	listen 80 default_server;
	listen [::]:80 default_server;
	# 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/html;
	# Add index.php to the list if you are using PHP
	index index.html index.htm index.nginx-debian.html;
	server_name _;
	location / {
	# First attempt to serve request as file, then
	# as directory, then fall back to displaying a 404.
	try_files $uri $uri/ =404;
	}
}

Se recomienda ampliamente que éste sea el único archivo a modificar por el administrador, ya que la configuración de HTTP se define en al archivo de configuración de Nginex. Un ejemplo particularizado del archivo default sería el siguiente:

server{
	listen 80;
	server_name	example.com;

	location / {
	proxy_pass http://localhost:5000;
	proxy_http_version 1.1;
	proxy_set_header Upgrade $http_upgrade;
	proxy_set_header Connection keep-alive;
	proxy_set_header Host $host;
	proxy_cache_bypass $http_upgrade;
	}
}

La directiva server_name deberá sustituirse por la dirección ip del servidor. El resto de las directivas y pares de entrada, dependerán de cada caso particular. Una vez modificado, hay que establecer un vínculo con la carpeta /sites-enabled/ con el comando siguiente:

sudo ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/default

Finalmente, es necesario reiniciarl el proxy mediante la instrucción:

sudo nginx –s reload


Suscríbete al Blog
Obtén las últimas noticias en tu correo!
Leer siguientes

Reencuentro con Linux

Muchos CIO's han confesado que jamás en su vida profesional fueron partidarios del software libre o del código abierto. Pero...

Mani Macmed Jun 19
An unhandled error has occurred. Reload 🗙