Кэдди прокси в докере дает пустой ответ - PullRequest
0 голосов
/ 06 июня 2018

У меня есть док-контейнер с Caddy и другой веб-сервер.

В моем Dockerfile у меня есть

EXPOSE 80 10240   # 10240 is the port of the other webserver.

И я запускаю Docker вот так (не спрашивайте мойпочему вам нужны EXPOSE и -p).

docker run -p 80:80 -p 10240:1024 -it <hash>

Запустится два сервера.На моем хост-компьютере (это Mac между прочим) я могу подключиться к localhost:10240 нормально.Однако, если я подключаюсь к localhost:80, я получаю пустой ответ (разорванное соединение).

Netstat в контейнере докера показывает:

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:10240           0.0.0.0:*               LISTEN      19/node         
tcp6       0      0 :::80                   :::*                    LISTEN      9/caddy         

Вот где это начинает становиться странным.Если я curl -L localhost в контейнере Docker, он работает нормально - я получаю веб-страницу с сервера 10240.

Если я curl -L 127.0.0.1 из контейнера Docker, он возвращает 404 Site 127.0.0.1 is not served on this interface.Хорошо, хорошо.

Если я curl -L 127.0.0.1 из снаружи , контейнер его также возвращает 404 Site 127.0.0.1 is not served on this interface.Так или иначе, мои запросы проходят , но Caddy отбрасывает localhost запросов извне контейнера, а внутри его нет.У меня включено ведение журнала, но оно ничего не печатает.

Может кто-нибудь сказать мне, что, черт возьми, происходит?Все эти вещи с переадресацией портов являются нелепыми.

Вот мой Caddyfile (и я пробовал около миллиарда других комбинаций localhost, 127.0.0.1 и т. Д.):

localhost:80
bind 0.0.0.0
proxy / 127.0.0.1:10240

1 Ответ

0 голосов
/ 07 июня 2018

Я не уверен, но подозреваю, что это произошло из-за того, что Docker для Mac работает с неисправно .Я отказался от Caddy и попытался сделать то же самое с Traefik, который также не работал (хотя он выдал «ошибку шлюза» вместо полного разрыва соединения).

Как только все перенесли в Linux, все заработало отлично.

...