El despliegue de la aplicación web está pensado para realizarse con nginx, el cual se encargará de servir todo el contenido estático publicando solamente el archivo index.html
. Como dice en la página oficial (ver referencias), la configuración se hace editando el archivo nginx.conf
el cual puede estar alojado en alguna de las siguientes rutas:
/usr/local/nginx/conf
,/etc/nginx
/usr/local/etc/nginx
Configuración de ejemplo:
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include caj.conf;
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
#set client body size to 2M #
client_max_body_size 2M;
}
La línea include caj.conf
permite dividir la configuración en varios archivos, en este caso en el archivo caj.conf
(por defecto la ruta para los archivos de configuración es la misma donde se encuentra el archivo principal nginx.conf
). Siguiendo con el ejemplo, el archivo caj.conf
contiene lo siguiente:
server {
listen 443 ssl http2;
server_name _;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers EECDH+AESGCM:EDH+AESGCM;
ssl_certificate asd.crt;
ssl_certificate_key asd.pem;
ssl_session_cache shared:SSL:1m;
root html/caj-frontend;
# Habilitar HSTS
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
#location / {
#allow 10.64.35.0/24;
#deny all;
#}
location / {
sendfile on;
tcp_nopush on;
sendfile_max_chunk 2m;
try_files $uri $uri/ /index.html?$query_string;
}
}
- Todas las líneas deben ser finalizadas con el carácter ";".
- Todas las líneas que comiencen con el carácter "#" serán ignoradas (líneas comentadas).
- **Reiniciar el servidor luego de editar (y salvar) alguno de los archivos de configuración.
listen 443 ssl http2;
: define el puerto y por defecto para permitir conecciones HTTPS, se utiliza el 443.server_name _;
: define el nombre de dominio (hostname) donde quedará accesible la aplicación en internet.ssl_certificate asd.crt;
: define la clave pública para HTTPS.ssl_certificate_key asd.pem;
: define la clave privada para HTTPS.root html/caj-frontend;
: define donde se encuentra el contenido estático a publicar, por defecto es en el directoriohtml/
dentro del directorio de instalación de nginx.
Solicitar los archivos asd.crt
y asd.pem
los cuales fueron obtenidos del archivo asd.p12
utilizado para aplicar HTTPS al backend. Estas claves son certificados autofirmados que se pueden obtener por línea de comandos utilizando aplicaciones Java, no olvidar remplazarlos por claves certificadas por alguna autoridad certificadora.
Para más información se recomienda ir a las referencias "Beginner's Guide" y "Full Example Configuration" citadas al final de este documento.
El manejo de nginx se hace con el comando nginx -s
.
Por ejemplo, para reiniciar el servidor :
nginx -s reload