Estoy ejecutando Docker Containers con un frente Vue.js y un backend Node.js+Express.js y administro las rutas usando Nginx.
Cuando accedo a la ruta https://equilibrista.app/ y hago clic en el enlace dentro de la página para ir a https://equilibrista.app/exams funciona bien, pero tengo un error cuando voy directamente a esta página (y aparece un error Express Cannot GET /exams ).
¿Por qué está pasando esto? Parece un error de redirección de Nginx, pero no pude encontrar nada malo en nginx.conf
server { listen 80; listen [::]:80; server_name equilibrista.app www.equilibrista.app; location ~ /.well-known/acme-challenge { allow all; root /var/www/html; } location / { rewrite ^ https://$host$request_uri? permanent; } } server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name equilibrista.app www.equilibrista.app; server_tokens off; ssl_certificate /etc/letsencrypt/live/equilibrista.app/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/equilibrista.app/privkey.pem; ssl_buffer_size 8k; ssl_dhparam /etc/ssl/certs/dhparam-2048.pem; ssl_protocols TLSv1.2 TLSv1.1 TLSv1; ssl_prefer_server_ciphers on; ssl_ciphers ECDH+AESGCM:ECDH+AES256:ECDH+AES128:DH+3DES:!ADH:!AECDH:!MD5; ssl_ecdh_curve secp384r1; ssl_session_tickets off; ssl_stapling on; ssl_stapling_verify on; resolver 8.8.8.8; location /api/ { proxy_pass http://api:3000/; proxy_redirect off; } location / { proxy_pass http://front:8888; } }La forma en que hicimos que funcionara con una aplicación Vue fue la siguiente.
1) Primero, tiene una ubicación que captura todos los archivos físicos y las rutas que existen.
2) En segundo lugar, redirige cualquier otra solicitud al archivo principal de la aplicación, para Vue es index.html.
Entonces, la configuración de su ubicación debería verse así:
location /api/ { proxy_pass http://api:3000/; } location ~* \/(index\.html|favicon\.ico|styles\.css|styles\.min\.css|css\/.*|js\/.*|images\/.*) { proxy_pass http://front:8888; } location / { rewrite / /index.html; proxy_pass http://front:8888; }(actualizado para coincidir con la pregunta)
tenemos los archivos estáticos en el servidor nginx, pero debería funcionar de la misma manera con proxy_pass.