tengo el siguiente problema: construyo una aplicación angular con nginx en docker... así:
FROM node:slim as build WORKDIR /usr/local/app COPY ./ /usr/local/app/ RUN npm install RUN npm run build FROM nginx:latest COPY --from=build /usr/local/app/dist/myapp /usr/share/nginx/html EXPOSE 4200cuando ahora construyo y ejecuto el dockerfile local... no hay problema, podría ingresar "localhost: 4200" y llegar a mi aplicación. Después de que eso funcione, configuro las acciones de github y copio mi código vis ssh en mi servidor vps. En este servidor tengo un nginx, que funciona como proxy inverso. La configuración de nginx para mi aplicación angular se ve así:
server { listen 80; return 301 https://$host$request_uri; } server { listen 443; server_name mydomain.com; ssl_certificate /etc/ssl/certs/mydomain.com/cert.pem; ssl_certificate_key /etc/ssl/certs/mydomain.com/key.pem; ssl on; access_log /var/log/nginx/access.log; location / { proxy_pass http://0.0.0.0:4200; } }Creo el certificado ssl a través de cloudflare y configuro el tls en modo estricto. Ahora pensé cuando ingresé a mydomain.com -> va a mi servidor ubuntu con el nginx instalado, verifica el certificado y luego redirige al contenedor docker, pero no sucede nada cuando intento llegar a mi sitio, aparece un 502 Mala puerta de enlace....
También probé esta configuración nginx (sin cloudflare y ssl) pero también obtuve un 502
server { listen 80 http2; server_name mydomain.com; location / { proxy_set_header Host $host; proxy_pass http://localhost:4200; } }¿Podrías ayudarme? Actualmente no entiendo por qué eso no funcionará.
(Expuse el puerto 4200 y ejecuté la aplicación angular de esta manera: docker run -p 4200:4200 myapp cuando ingreso netstat -tulpn siempre dice que docker se ejecuta en el puerto 4200 ... pero cuando hago curl en mi linux dice: (56) Recv failure: Connection reset by peer )
Tienes que implementar la aplicación como sitio estático. No debe usar ng serve en producción con el puerto 4200.
Hacer esto
/usr/share/nginx/html/usr/share/nginx/htmlAquí está el archivo NgInx actualizado
user www-data; worker_processes auto; pid /run/nginx.pid; include /etc/nginx/modules-enabled/*.conf; events { worker_connections 768; # multi_accept on; } http { upstream springboot { server localhost:8080 max_conns=10; } server { listen 80; listen [::]:80; server_name <server ip>; location / { root /usr/share/nginx/html; try_files $uri $uri/ /index.html; proxy_http_version 1.1; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Port $server_port; } } ## # Logging Settings ## access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; ## # Gzip Settings ## gzip on; }