13

我有一个带有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 ”上

4

2 回答 2

5

根据这些教程:

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 服务器应该使用以下配置之一使用端口 80 为您的 ip 上的网站提供服务:

* {
    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...
    ...
}

祝你好运!

于 2019-06-05T07:49:58.037 回答
1

您的 Django 是否有可能settings.py只有mydomain.com作为允许的主机而不是 IP?这样,服务器应该返回类似“不在此接口上提供服务”的内容,并且在使用域名时不应该返回。

前段时间我遇到了类似的问题,不是在 Caddy 上,而是在 Ubuntu 上也遇到过 Apache。它还可以解释为什么更改 Caddy 配置并不能解决问题,因为它是正确的。

settings.py应该有一条线

ALLOWED_HOSTS = [IP, 'mydomain.com']

可以在文档中找到有关此参数的更多信息。

于 2019-06-24T10:50:37.883 回答