Вчера провозился некоторое время с банальной ошибкой, про которую я прекрасно знаю, и даже когда-то наверняка тут писал, но вот сам забыл в моменте. Думаю, много тех, кто настраивает сервисы в Linux, с ней сталкивались.
Проксирую запросы к сервису через Nginx. Сам сервис работает локально, ничего особенного. Пример конфигурации беру из репозитория, то есть не сам пишу. На вид там всё стандартно, поменял только пути к сертификатам.
Сервис с дефолтными настройками запускается на http://localhost:8000. Пробую напрямую, всё работает. Через Nginx - никак, 502 ошибка, в логах стандартно - (111: Connection refused) while connecting to upstream. Думаю, что за ерунда. Напрямую же отвечает, почему через Nginx - нет. Ещё и приложение никаких своих логов не даёт, не понятно, что не так.
Разобрался чисто интуитивно. Вспомнил, что 127.0.0.1 и localhost - это не одно и то же. Первый - адрес ipv4, а localhost на современных дистрибутивах резолвится в ipv6 (::1).
Попадались на таком нюансе? Я уже не первый раз. Кстати, не понимаю, для чего localhost перевели на ipv6. В чём смысл? Даже не то, что перевели. В /etc/hosts оставили оба адреса, и ipv4, и ipv6, но по современным RFC адреса v6 имеют приоритет над v4. Поэтому теперь localhost по умолчанию отвечает с адреса ::1, а не 127.0.0.1. Это можно вручную изменить, убрав запись с ::1 из /etc/hosts. Я одно время это делал, потом перестал. Нет смысла бороться с ветряными мельницами. Надо привыкать.
#linux #ошибка
Проксирую запросы к сервису через Nginx. Сам сервис работает локально, ничего особенного. Пример конфигурации беру из репозитория, то есть не сам пишу. На вид там всё стандартно, поменял только пути к сертификатам.
upstream app {
server 127.0.0.1:8000;
}
.....
location /app/ {
.....
proxy_pass http://app/;
.....
}
Сервис с дефолтными настройками запускается на http://localhost:8000. Пробую напрямую, всё работает. Через Nginx - никак, 502 ошибка, в логах стандартно - (111: Connection refused) while connecting to upstream. Думаю, что за ерунда. Напрямую же отвечает, почему через Nginx - нет. Ещё и приложение никаких своих логов не даёт, не понятно, что не так.
Разобрался чисто интуитивно. Вспомнил, что 127.0.0.1 и localhost - это не одно и то же. Первый - адрес ipv4, а localhost на современных дистрибутивах резолвится в ipv6 (::1).
Попадались на таком нюансе? Я уже не первый раз. Кстати, не понимаю, для чего localhost перевели на ipv6. В чём смысл? Даже не то, что перевели. В /etc/hosts оставили оба адреса, и ipv4, и ipv6, но по современным RFC адреса v6 имеют приоритет над v4. Поэтому теперь localhost по умолчанию отвечает с адреса ::1, а не 127.0.0.1. Это можно вручную изменить, убрав запись с ::1 из /etc/hosts. Я одно время это делал, потом перестал. Нет смысла бороться с ветряными мельницами. Надо привыкать.
#linux #ошибка