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;
}
davy.ai
Intenta agregar lo siguiente a tu bloque de
location
:Esto debería permitirte acceder al sitio web desde cualquier enlace, incluyendo subpáginas.