Назад | Перейти на главную страницу

nginx: невозможно настроить базовый прокси (в соединении отказано)

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

Вот конфигурация nginx моего простого, полностью статического приложения:

server {
    listen 80;

    location / {
        root   /usr/share/nginx/html;
        index  index.html;
    }
}

Порт 80 приложения привязан к порту хоста 8000.

А вот конфиг прокси:

server {
    listen 80;

    location / {
        root   /usr/share/nginx/html;
        index  index.html;
    }
}

server {
    listen 80;

    # not real DNS, just an example
    server_name static.myserver.net;

    location / {
        proxy_pass http://127.0.0.1:8000;
    }
}

Записи DNS myserver.net и static.myserver.net привязаны к IP-адресу сервера.

Но когда я пытаюсь подключиться к static.myserver.net, Я получаю ошибку 502 и запись в журнале прокси:

2016/06/04 13:26:58 [error] 5#5: *2 connect() failed (111: Connection refused) while connecting to upstream, client: 100.100.100.100, server: static.myserver.net, request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:8000/", host: "static.myserver.net"

Журналы приложения nginx пусты.

Но оба myserver.net:8000 из Интернета и 127.0.0.1:8000 от хоста полностью доступны. Что не так?

Нашли проблему. Конфигурации кажутся правильными, но прокси-сервер тоже был настроен как контейнер Docker. Таким образом, адрес 127.0.0.1 указывал на контейнер Docker, а не на хост. proxy_pass http://real_host_ip:8000; работает правильно.