Nginx为什么我的服务器在localhost上提供正确的内容,但不是0.0.0.0

我试图从我的服务器获取数据,但如果我尝试从localhost/my/api它给400,但如果我尝试从localhost/my/api它给我需要的内容。 我正在使用nginx,这里是服务器的configuration文件

 server { listen 80; server_name localhost 54.149.242.144; 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 

为什么它只能从本地主机给我正确的内容,并从0.0.0.0地址给我400的? 也是这样做,所以我不能从外部机器访问API。 最后,我使用gunicorn作为后端服务器,并使用nginx来反向代理gunicorn。

地址0.0.0.0只能在Linux机器的特定环境中使用。 回到最初,你可以使用0.0.0.0,它被解释为回送地址(127.0.0.1或localhost)。

地址0.0.0.0现在仅用于侦听套接字,以显示进程正在侦听所有IPv4接口。 很高兴有这个configuration,因为你可以改变服务器的IP地址,而不需要重新启动在0.0.0.0上监听的服务。

我记得(我可能是错的…),如果你试图启动一个监听器从一个接口的IP链接下来将失败。