Configurar la redirección de nginx desde la raíz

Configurar la redirección de nginx desde la raíz

Estoy intentando configurar nginx pero no puedo hacerlo funcionar a pesar de mis múltiples intentos. Lo que necesito es:

  • puerto 80, /downloades servido por nginx
  • puerto 80, todo lo demás se redirige a la misma máquina, puerto 8080

Esto funciona bien, pero ahora lo necesito sólo en el caso de la raíz (http://mihost/) el cliente es redirigido a la aplicación predeterminada en /Games. Mi configuración actual es incorrecta y me redirige en un bucle infinito. Recibí algunas ideas deaquípero no pude hacerlo funcionar. Ejemplos de redirecciones:

ex1: http://myhost/  --> http://myhost/Games --> http://localhost:8080/Games
ex2: http://myhost/Books --> http://localhost:8080/Books

Yo he tratado

        location / {
            proxy_pass  http://localhost:8080/Games;
        }

Pero esto parece actuar en todo (por ejemplo: /Books, /XYZ, ...). Creo que una redirección cuando se especifica la raíz exacta es la más limpia.

Además, necesito replicar esto en HTTPS. Supongo que esto también funcionará con el elemento "flujo".


nginx.conf:

http {
    server {
        listen  80;
        root /home/www/;
        location = / {
            return 301 http://$host/Games;
        }
        location / {
            proxy_pass  http://localhost:8080;
        }
        location /download/ {
            ....
        }
    }
}

stream {
    server {
        listen  443;
        ...
    }   
} 

Respuesta1

¿Cuál es exactamente la pregunta aquí? Tu configuración me funciona:

server {
    listen 80;
    listen [::]:80;

    server_name 192.168.0.2;
    root /var/www;

    location = / {
        return 301 http://$host/folder;
    }

    location / {
        proxy_pass http://otherserver:80;
    }
}

Registros:

[22/Feb/2018:17:04:55 +0100] "GET / HTTP/1.1" 301
[22/Feb/2018:17:04:55 +0100] "GET /folder HTTP/1.1" 301
[22/Feb/2018:17:04:55 +0100] "GET /folder/ HTTP/1.1" 200
[22/Feb/2018:17:11:29 +0100] "GET /index.html HTTP/1.0" 200

¿Qué ves en tus registros? ¿Las solicitudes no se pueden enviar por proxy o el host local causa el problema? ¿Cómo es la configuración de tu localhost? Hay muy poca información para poder ayudarte.

Además, necesito replicar esto en HTTPS. Supongo que esto también funcionará con el elemento "flujo".

No estoy seguro de lo que quieres decir, pero puedes agregar otro bloque de servidor con la misma configuración en listen 443lugar de listen 80y agregar las directivas ssl.

información relacionada