通过IP访问Caddy服务器

时间:2019-05-15 07:24:34

标签: docker docker-compose caddy caddyfile

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

这都不起作用,你们当中有人知道我该怎么解决吗?

2 个答案:

答案 0 :(得分:3)

根据这些教程:

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/tutorial/caddyfile

您的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...
    ...
}

祝你好运!

答案 1 :(得分:1)

您的Django settings.py是否可能只有 mydomain.com 作为允许的主机,而没有IP?这样,服务器应该返回诸如“此接口未提供服务”之类的信息,并且在使用域名时不应返回诸如此类的信息。不久前,我遇到了类似的问题,不是Caddy,而是Ubuntu上的Apache。它还可以解释为什么更改您的Caddy配置不会解决问题,因为它是正确的。

settings.py应该有一行

ALLOWED_HOSTS = [IP, 'mydomain.com']

有关此参数的更多信息,请参见in the documentation

希望对您有帮助。