Доступ к серверу Caddy по IP

У меня есть веб-сайт с docker, и я использую Caddy для производства. Это моя конфигурация на моем Caddyfile

mydomain.com {
    proxy / django:5000 {
        header_upstream Host {host}
        header_upstream X-Real-IP {remote}
        header_upstream X-Forwarded-Proto {scheme}
        header_upstream X-CSRFToken {~csrftoken}
    }
    log stdout
    errors stdout
    gzip
}

Эта конфигурация хорошо работает, когда я использую mydomain.com, но когда я пытаюсь получить доступ к серверу по IP, мне возвращается следующая ошибка:

404 Site 156.130.11.8 is not served on this interface

Я пробовал использовать *, 156.130.11.8 и :80

* {
    proxy / django:5000...
    ...

156.130.11.8 {
    proxy / django:5000...
    ...

Ничего из этого тоже не работает, кто-нибудь из вас знает, как я могу это решить?

РЕДАКТИРОВАТЬ: код находится здесь: https://github.com/maguayo/django-starter-api Конфигурация Caddy находится в разделе compose/production/caddy/, также конфигурация, которую я запускаю, находится в "production.yml"


person Marcos Aguayo    schedule 15.05.2019    source источник
comment
Можете ли вы предоставить образец репозитория git, чтобы увидеть проблему в действии?   -  person Tarun Lalwani    schedule 18.06.2019
comment
@TarunLalwani да. Вот оно: github.com/maguayo/django-starter-api Caddy — это под compose/production/caddy и production.yml в корне   -  person Marcos Aguayo    schedule 18.06.2019
comment
Я запустил docker-compose -f production.yml up и получил какие-то ошибки?   -  person Tarun Lalwani    schedule 18.06.2019
comment
Нет. Не должно быть ошибок при использовании docker-compose -f production.yml up, но при попытке доступа к веб-сайту через браузер он возвращает 404. Сайт 156.130.11.8 не обслуживается на этом интерфейсе.   -  person Marcos Aguayo    schedule 18.06.2019
comment
Вы определили переменную среды DOMAIN_NAME в файле .env. Должно быть *:80 тогда будет работать только ваша установка   -  person Tarun Lalwani    schedule 18.06.2019
comment
@TarunLalwani Я знаю, это должно сработать, но это не так. Я вообще не могу зайти на сайт, ни по IP, ни по домену.   -  person Marcos Aguayo    schedule 18.06.2019
comment
Давайте продолжим это обсуждение в чате.   -  person Tarun Lalwani    schedule 18.06.2019
comment
Мой ответ, вероятно, был слишком широким, не так ли?   -  person creyD    schedule 25.06.2019


Ответы (2)


Согласно этим учебникам:

https://www.digitalocean.com/community/tutorials/how-to-host-a-website-with-caddy-on-ubuntu-16-04

https://www.booleanworld.com/host-website-caddy-web-server-linux/

https://caddyserver.com/docs/caddyfile-tutorial

ваш сервер Caddy должен обслуживать веб-сайт на вашем IP-адресе, используя порт 80, используя одну из следующих конфигураций:

* {
    proxy / django:5000...
    ...

156.130.11.8 {
    proxy / django:5000...
    ...

:80 {
    proxy / django:5000...
    ...

http:// {
    proxy / django:5000...
    ...

Возможно, http://156.130.11.8 { proxy / django:5000 ... } сделает эту работу. Также попробуйте использовать localhost вместо IP-адреса следующим образом:

localhost {
    proxy / django:5000...
    ...
}

http://localhost {
    proxy / django:5000...
    ...
}

Удачи!

person Marvin Klar    schedule 05.06.2019
comment
Я уже пробовал это и получаю ту же ошибку: 404 Сайт 156.130.11.8 не обслуживается на этом интерфейсе. - person Marcos Aguayo; 18.06.2019
comment
404 исходит от кэдди или джанго? Посмотрите логи джанго. - person Oerd; 24.06.2019

Возможно ли, что ваш Django settings.py имеет только mydomain.com в качестве разрешенного хоста, а не IP-адрес? Таким образом, сервер должен возвращать что-то вроде не обслуживается на этом интерфейсе и не должен, когда используется доменное имя.

Некоторое время назад у меня возникла аналогичная проблема, но не с Caddy, а с Apache на Ubuntu. Это также объясняет, почему изменение конфигурации Caddy не решает проблему, поскольку это правильно.

settings.py должна иметь строку типа

ALLOWED_HOSTS = [IP, 'mydomain.com']

Подробнее об этом параметре можно узнать в документации.

person creyD    schedule 24.06.2019
comment
В моих настройках ALLOWED_HOSTS=[*] :( - person Marcos Aguayo; 25.06.2019
comment
Ах, мой плохой. А вы не нашли решения за это время? - person creyD; 25.06.2019
comment
А в вашей конфигурации докера есть настройки для переадресации портов? - person creyD; 25.06.2019
comment
Я не уверена. это моя конфигурация: github.com/maguayo/django-starter -api/blob/master/ Вероятно, это связано с докером. - person Marcos Aguayo; 25.06.2019
comment
Когда вы пытались получить доступ к IP-адресу, вы указали порт? Если вы хотите, вы можете более подробно изучить docker networking в документации. , но, насколько я могу судить, ваш выглядит довольно солидно, пока кто-то указывает порт. - person creyD; 25.06.2019