我有一个带有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...
...
这都不起作用,你们当中有人知道我该怎么解决吗?
答案 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。
希望对您有帮助。