Настройка перенаправления nginx из root

Настройка перенаправления nginx из root

Я пытаюсь настроить nginx, но не могу заставить его работать, несмотря на мои многочисленные попытки. Мне нужно:

  • порт 80, /downloadобслуживается nginx
  • порт 80, все остальное перенаправляется на тот же компьютер, порт 8080

Это работает отлично, но теперь мне это нужно только в случае с рутом (http://мойхост/) клиент перенаправляется в приложение по умолчанию в /Games. Моя текущая конфигурация неверна и перенаправляет меня в бесконечный цикл. Я почерпнул несколько идей изздесьно не смог заставить это работать. Примеры перенаправлений:

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

я пытался

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

Но это, кажется, действует на все (например: /Books, /XYZ, ...). Я думаю, что перенаправление, когда указан точный корень, является самым чистым.

Также мне нужно повторить это на HTTPS. Я полагаю, что это также будет работать через элемент "stream".


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;
        ...
    }   
} 

решение1

В чем именно вопрос? Ваша конфигурация мне подходит:

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;
    }
}

Журналы:

[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

Что вы видите в своих журналах? Запросы вообще не проксируются или проблема в localhost? Как выглядит конфигурация localhost? Слишком мало информации, чтобы помочь вам.

Также мне нужно повторить это на HTTPS. Я полагаю, что это также будет работать через элемент "stream".

Не совсем понимаю, что вы имеете в виду, но вы можете просто добавить еще один блок сервера с той же конфигурацией listen 443вместо listen 80и добавить директивы ssl.

Связанный контент