Configuré una solución de una aplicación Angular (v9) que se está creando como una imagen de Docker (con nginx como servidor web) y se está implementando en Kubernetes. Todo funciona, excepto que para cada solicitud, tanto para la aplicación raíz como para sus archivos javascript, recibo el contenido del index.html.
Mi archivo de configuración de nginx tiene el siguiente aspecto (principalmente el predeterminado):
pid /var/run/nginx.pid; events { worker_connections 1024; } http { types { module; } include /etc/nginx/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 /var/log/nginx/access.log main; sendfile on; #tcp_nopush on; keepalive_timeout 65; #gzip on; include /etc/nginx/conf.d/*.conf; add_header X-Content-Type-Options nosniff; server { location / { # First attempt to serve request as file, then # as directory, then redirect to index(angular) if no file found. try_files $uri $uri/ /index.html; } } }Incluso si comento las líneas de configuración de location/try_files, sigue siendo la misma situación. Encontré mucha orientación para crear una reescritura de este tipo, pero en ninguna parte encontré nada que explicara por qué ocurre esta reescritura sin que yo la configure.
Bueno, resulta que no tuvo nada que ver con nginx. El elemento de entrada se configuró incorrectamente, lo que reescribió cada solicitud a "/" y, por lo tanto, cada solicitud devolvió la página predeterminada (= index.html).
Con más detalle, tenía la siguiente configuración en spec.rules (nota las últimas líneas)
http: paths: - backend: serviceName: my-app servicePort: 80 path: /que tuvo que ser cambiado a:
http: paths: - backend: serviceName: my-app servicePort: 80 path: /(.*)