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/hostsen 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.