Estoy intentando configurar nginx pero no puedo hacerlo funcionar a pesar de mis múltiples intentos. Lo que necesito es:
- puerto 80,
/download
es 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 443
lugar de listen 80
y agregar las directivas ssl.