2016-11-14 3 views
1

У меня возникли проблемы с балансировкой нагрузки на Nginx. Я использую: - Ubuntu 16.04 и - Nginx 1.10.0.Nginx Reverse Proxy upstream не работает

Короче говоря, когда я прохожу свой IP-адрес непосредственно в «proxy_pass», прокси-сервер работает:

server { 
    location/{ 
      proxy_pass http://01.02.03.04; 
    } 
} 

Когда я посещаю мой прокси-компьютер, я могу видеть содержимое из прокси-ф ... но когда я использую директиву вверх по течению, он не делает:

upstream backend { 
    server 01.02.03.04; 
} 

server { 
    location/{ 
      proxy_pass http://backend; 
    } 
} 

когда я посещаю мой прокси-компьютер, я поздоровался с страницей по умолчанию Nginx сервера, а не содержание от входного адреса IP.

Любая дополнительная помощь будет оценена по достоинству. Я провел много исследований, но не могу понять, почему «вверх по течению» не работает. У меня нет ошибок. Это просто не прокси.

+1

Вы пытались указать порт в восходящем направлении? 'server 01.02.03.04: 80;' – karliwson

+0

Я сделал, @karliwson. Это так странно. –

ответ

0

Хорошо, похоже, я нашел ответ ...

две вещи о внутренних серверах, по крайней мере, для вышеуказанного сценария при использовании IP-addressses:

  1. должен быть указан порт
  2. порт не может быть: 80 (согласно @karliwsn порт может быть 80, это просто, что восходящие серверы не могут прослушивать тот же порт, что и обратный прокси. Я еще не тестировал его, но это хорошо заметить).

внутренний сервер блок (ы) должны быть настроены следующим образом:

server { 

    # for your reverse_proxy, *do not* listen to port 80 
    listen 8080; 
    listen [::]:8080; 

    server_name 01.02.03.04; 

    # your other statements below 
    ... 
} 

и ваш блок обратного прокси-сервера должен быть настроен, как показано ниже:

upstream backend { 
    server 01.02.03.04:8080; 
} 

server { 
    location/{ 
     proxy_pass http://backend; 
    } 
} 

Это выглядит так, как будто бекенд сервер слушает: 80, обратный прокси-сервер не отображает его содержимое. Я предполагаю, что это имеет смысл, поскольку сервер фактически использует порт 80 по умолчанию для широкой публики.

Спасибо @karliwson за то, что он подтолкнул меня к пересмотру порта.

+1

Фактически порт восходящего потока может быть 80, но он должен прослушиваться на другом IP-адресе, чем используется основной IP-адрес, используемый nginx. Я обычно делаю, чтобы мои бэкенды слушали локальный хост, кроме случаев, когда он находится на удаленном сервере. – karliwson

 Смежные вопросы

  • Нет связанных вопросов^_^