Get it on Google Play
31-07-2018
 

Servir contenido estático con Nginx y Docker

Nginx

Nginx

Nginx es uno de mis servidores favoritos. Al escribir este post creí que había escrito abastamente sobre el tema y resulta que solo tengo un artículo dedicado a como crear un balanceador de carga con este servidor.

En el artículo de hoy vamos a ver primero como configurarlo para que sirva contenido estático, algo sencillo. Esto nos puede servir para librerar una web sencilla o el clásico mensaje de estamos trabajando en ello.

La configuración del fichero ‘default.conf’ queda de la siguiente manera:

server {
	root /opt/web;
	index index.html;

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

Donde ‘/opt/web’ es la carpeta donde espera encontrar los archivos. Si, además queréis ponerle un certificado de seguridad el tema iría de la siguiente forma:

server {
	listen 80 default_server;

	return 301 https://$host$request_uri;
	}

server {
	listen 443 ssl;

	ssl_certificate     /etc/nginx/certs/certificado.crt;
    	ssl_certificate_key /etc/nginx/certs/certificado.key;
    	ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
    	ssl_ciphers         HIGH:!aNULL:!MD5;

	root /opt/web;
	index index.html;

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

Y ya para ponerle la guinda podemos arrancar esto sobre Docker simplemente con un comando:

# Sin certificado de seguridad
docker run --restart=always \
	-p 80:80 \
	--name nginx \
	-v /opt/nginx/default.conf:/etc/nginx/conf.d/default.conf:ro \
	 -d nginx:alpine

#Con certificado de seguridad
docker run --restart=always \
	-p 80:80 \
	-p 443:443 \
	--name nginx \
	-v /opt/nginx/certs:/etc/nginx/certs:ro \
	-v /opt/nginx/default.conf:/etc/nginx/conf.d/default.conf:ro \
	 -d nginx:alpine

Como veis la única diferencia entre con certificado de seguridad y sin el está en los puertos que mapeamos y la carpeta donde tenemos los certificados(También mapeados).

En fin, un artículo fácil. Si os ha gustado comentar, compartir y suscribiros 😀

Si te ha servido, por favor comparte
 

Leave a Reply