Saltar a contenido

Reverse proxy + TLS local (Nginx)

Alcance: Publlicación segura en LAN para auth.erre.com, api.erre.com, app.erre.com sin comprar dominio.
Estado: operativo en srv-app-01.

Prerrequisitos

  • /etc/hosts en el equipo cliente: auth.erre.com api.erre.com app.erre.com

  • Cert local (mkcert o autofirmado) en el servidor:

  • Cert: /etc/nginx/ssl/faststack.crt
  • Key: /etc/nginx/ssl/faststack.key (600)

Configuración Nginx

Archivo: /etc/nginx/sites-available/stack-ssl.conf (enlazado en sites-enabled)

server {
listen 80;
server_name auth.erre.com api.erre.com app.erre.com;
return 301 https://$host$request_uri;
}

server {
listen 443 ssl http2;
server_name auth.erre.com;
ssl_certificate     /etc/nginx/ssl/faststack.crt;
ssl_certificate_key /etc/nginx/ssl/faststack.key;
add_header Strict-Transport-Security "max-age=300" always;
location / { include snippets/proxy_common.conf; proxy_pass http://127.0.0.1:8080; }
}

server {
listen 443 ssl http2;
server_name api.erre.com;
ssl_certificate     /etc/nginx/ssl/faststack.crt;
ssl_certificate_key /etc/nginx/ssl/faststack.key;
add_header Strict-Transport-Security "max-age=300" always;
location / { include snippets/proxy_common.conf; proxy_pass http://127.0.0.1:8081; }
}

server {
listen 443 ssl http2;
server_name app.erre.com;
ssl_certificate     /etc/nginx/ssl/faststack.crt;
ssl_certificate_key /etc/nginx/ssl/faststack.key;
add_header Strict-Transport-Security "max-age=300" always;
location / { include snippets/proxy_common.conf; proxy_pass http://127.0.0.1:8082; }
}

Snippet común:

/etc/nginx/snippets/proxy_common.conf

Comandos

sudo nginx -t && sudo systemctl reload nginx
sudo ufw allow 443/tcp

Pruebas

curl -I https://auth.erre.com
curl -I https://api.erre.com
curl -I https://app.erre.com

Rollback

Desenlazar stack-ssl.conf, recargar Nginx.

Volver a los puertos locales (127.0.0.1) si se expusieron.