Configurando NGINX como Proxy Reverso (HTTP/HTTPS)
⚠️ Todas las configuraciones hechas en este manual son ejemplos simples e hipotéticos. Será necesario realizar adaptaciones según la topología de su entorno.
🌐 Parte 1 - Configurando NGINX como Balanceador
Paso 1 – Montando la Topología
Agregue en la capa de balanceo el NGINX Balancer con IPv4 Público. Después de eso, aplique el cambio.

Paso 2 – Apuntando el Dominio
- Apunte su dominio a la IP Pública del NGINX.
- Acceda al directorio
/etc/nginx/conf.d.

-
Cree un archivo de configuración para su dominio.
-
Edite el archivo creado con el contenido según el ejemplo a continuación.
Configuración del HTTP
server {
listen *:80;
listen [::]:80;
server_name dominio.com.br; #Coloque o domínio de acesso aqui
# A linha abaixo redireciona o acesso para HTTPS, na porta 443
# Caso ela esteja sendo utilizada, o restante do código desse bloco server abaixo dela não precisa ser utilizado
# return 301 https://$host$request_uri;
access_log /var/log/nginx/dominio.access_log main; #troque dominio pelo nome desejado para logs de acesso e erro
error_log /var/log/nginx/dominio.error_log info;
proxy_temp_path /var/nginx/tmp/;
proxy_connect_timeout 5s;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
proxy_next_upstream error timeout http_500;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Remote-Port $remote_port;
proxy_set_header X-URI $request_uri;
proxy_set_header X-ARGS $args;
proxy_set_header Refer $http_refer;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
location / {
proxy_pass http://200.150.194.160; # IP e porta da Instancia onde está a aplicação
add_header Set-Cookie "SRVGROUP=$group; path=/; HttpOnly";
}
}
💾 Después de editar, guarde los cambios y pruebe la sintaxis dentro del SSH del nginx usando el comando nginx -t de esta forma:
nginx -t
nginx: [warn] the "user" directive makes sense only if the master process runs with super-user privileges, ignored in /etc/nginx/nginx.conf:1
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Si todo está bien, reinicie la instancia del NGINX

📘 Documentación adicional: manual-nginx.jelastic.saveincloud.net
🔐 Añadiendo el Certificado SSL (HTTPS)
Paso 1 – Instalación de Let’s Encrypt
Instale el add-on Let's Encrypt Free SSL, completando con el dominio que apunta al NGINX.

Paso 2 – Puerto 443 en NGINX
Edite el mismo archivo creado en NGINX, añadiendo la configuración para HTTPS:
server {
listen *:443 ssl;
listen *:443 quic;
listen [::]:443 ssl;
listen [::]:443 quic;
http2 on;
server_name dominio.com.br; #Coloque o domínio de acesso aqui
ssl_certificate /var/lib/jelastic/SSL/jelastic.chain;
ssl_certificate_key /var/lib/jelastic/SSL/jelastic.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;
ssl_session_cache shared:SSL:10m;
add_header alt-svc 'h3=":443"; ma=86400';
access_log /var/log/nginx/dominio.com.br.access_log main; #troque dominio pelo nome desejado para logs de acesso
error_log /var/log/nginx/dominio.com.br.error_log info; #troque dominio pelo nome desejado para logs de erro
proxy_temp_path /var/nginx/tmp/;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
location / {
proxy_pass http://127.0.0.1; # IP da Instancia onde está a aplicação
proxy_next_upstream error;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-URI $request_uri;
proxy_set_header X-ARGS $args;
proxy_set_header Refer $http_refer;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Ssl-Offloaded "1";
}
}
✅ Guarde y reinicie NGINX nuevamente. Su sitio estará accesible con HTTPS y certificado válido.
🔁 Configuración con upstream (Múltiples Instancias)
Si usted tiene más de una instancia de su aplicación (por ejemplo, para escalabilidad o alta disponibilidad), lo ideal es usar el bloque upstream en NGINX. Con esto, NGINX actuará como balanceador de carga entre esas instancias.
📌 Ejemplo de configuración con upstream
upstream app_backend {
server 192.168.0.101:8080;
server 192.168.0.102:8080;
server 192.168.0.103:8080;
# Você pode adicionar mais servidores conforme necessário
}
Luego, en su bloque server, apunte el proxy_pass a ese grupo de servidores:
location / {
proxy_pass http://app_backend; # <--- coloque seu upstream aqui
...
...
}
ℹ️ Detalles adicionales:
- NGINX distribuirá las solicitudes entre las instancias listadas en
upstream. - El balanceo por defecto es round-robin, pero puede usar otras opciones como
least_connosticky_sessions, si es necesario.
🛠️ Solución de Problemas – Problemas Comunes
❌ Error al configurar HTTPS sin certificado
⚠️ Si usted agrega la configuración del puerto 443 en NGINX sin instalar el certificado SSL (Let's Encrypt), el servicio puede fallar al reiniciar, mostrando un error similar a:
nginx: [emerg] BIO_new_file("/var/lib/jelastic/SSL/jelastic.chain") failed (SSL: error:02001002:system library:fopen:No such file or directory)
💡 Para evitar este error:
- Asegúrese de instalar el certificado Let's Encrypt antes de activar el bloque
serveren el puerto 443. - En caso de que aún esté probando o quiera evitar la falla temporalmente, comente o elimine la configuración HTTPS hasta que el certificado esté disponible.