Кэдди прокси в докере дает пустой ответ

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

В моем Dockerfile я имею

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

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

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

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

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

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 в контейнере докера это работает нормально - я получаю веб-страницу с сервера 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, Так или иначе мои запросы проходят, но Кэдди падает localhost запросы извне контейнера, а внутри - нет. У меня включено ведение журнала, но оно ничего не печатает.

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

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

localhost:80
bind 0.0.0.0
proxy / 127.0.0.1:10240

1 ответ

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

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

Другие вопросы по тегам