es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

No se puede acceder a las subrutas en Nginx + React router detrás de un proxy.

Tengo un servidor nginx con una aplicación web local funcionando en el puerto 4000. Pude crear las reglas de Nginx para cargarla a través del proxy, pero ahora solo puedo acceder al sitio web a través de la URL principal, como “https://app.domain.com” (esto funciona bien), si intento entrar a través de cualquier enlace como “https://app.domain.com/página” obtengo un error 404.

Esta es mi configuración actual de nginx;

server {
# gzip
gzip on;
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_types text/plain text/css text/xml application/json application/javascript application/xml+rss application/atom+xml image/svg+xml;

# Configuración SSL
listen 443;
listen [::]:443;
expires $expires;
ssl on;
ssl_certificate /etc/ssl/app.crt;
ssl_certificate_key /etc/ssl/app.key;

index index.html;

server_name app.domain.com;
proxy_intercept_errors on;
autoindex off;

root /var/www/domain-app;

# Estoy usando esta regla para permitir que se acceda directamente a archivos como iconos o hojas de estilo css.
location ~ ^.+..+$ {
proxy_set_header Host $host;
proxy_pass http://localhost:4000;
proxy_redirect off;

if (!-e $request_filename){
  rewrite https://$server_name break;
}

try_files $uri /index.html;

}

location / {
proxy_set_header Host $host;
proxy_pass http://localhost:4000;
proxy_redirect off;

try_files $uri /index.html;

}
}

Intenté algo como esto en la ubicación y funcionó para el dominio raíz y para las páginas, pero acceder al sitio desde una subpágina como “https://app.domain.com/página/sub” falló; cargó la página pero intentó encontrar los recursos en “https://app.domain.com/página/static/…”

ubicación / {
proxy_set_header Host $host;
proxy_pass http://localhost:3000;
proxy_redirect off;

set $archivo_de_retroceso /index.html;
if ($http_accept !~ text/html) {
set $archivo_de_retroceso /null;
}
try_files $uri $archivo_de_retroceso;
}

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Intenta agregar lo siguiente a tu bloque de location:

    location / {
      proxy_set_header Host $host;
      proxy_pass http://localhost:4000;
      proxy_redirect off;
    
      set $fallback_file /index.html;
      if ($http_accept !~ text/html) {
          set $fallback_file /null;
      }
      try_files $uri $uri/ $fallback_file;
    }
    

    Esto debería permitirte acceder al sitio web desde cualquier enlace, incluyendo subpáginas.

Comments are closed.