【发布时间】:2017-03-06 13:03:51
【问题描述】:
我正在尝试从我的服务器获取数据,但如果我从 0.0.0.0/my/api 尝试它会给出 400,但如果我从 localhost/my/api 尝试它会给出我需要的内容。我正在使用 nginx,这是服务器的配置文件
server {
listen 80;
server_name localhost;
access_log /var/log/nginx/myapp.log;
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /home/myapp;
}
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
另外,如果我做一个 netstat,我会为服务器得到这个
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 8080/nginx
为什么它只会给我来自 localhost 的正确内容,而给我来自 0.0.0.0 地址的 400?这也是这样做的,所以我无法从外部机器访问 api。最后,我使用 gunicorn 作为后端服务器,并使用 nginx 反向代理 gunicorn。
【问题讨论】:
-
0.0.0.0不是您服务器的 IP 地址。ifconfig显示什么? -
如果您在设置中设置了
DEBUG=False,则需要确保您已正确设置ALLOWED_HOSTS。所以,如果它只包含'127.0.0.1',那可能是你的问题。 -
@csinchok 我将它从
ALLOWED_HOSTS=['localhost']更改为ALLOWED_HOSTS=['0.0.0.0']仍然无法正常工作。 -
@RichardSmith 显示内部私有 aws ip x.x.x.x
-
当你说你无法从
0.0.0.0/my/api获取数据时,那可能是因为那是“本地网络上的所有 IP”的元数据,所以它不知道去哪里。如果您在本地主机上工作,请使用 127.0.0.1