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

时间:2016-10-24 17:02:07

标签: linux django nginx server

我正在尝试从我的服务器获取数据但是如果我尝试从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。

1 个答案:

答案 0 :(得分:0)

看来您的输出是netstat -a的输出,而不仅仅是netstat。这是AWS Ubuntu映像上netstat -a的相当通用的结果:

Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 0.0.0.0:hostmon         0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:http            0.0.0.0:*               LISTEN
tcp        0      0 localhost:domain        0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:ssh             0.0.0.0:*               LISTEN

正如其中一位评论者所指出的那样0.0.0.0意味着"所有IP地址"。

Localhost将由localhost一词专门表示,如上所示。

P.S。不需要为只有server_name块的nginx.conf这样的简单server指定ParseFile.saveInBackground()指令。

P.P.S。很好的触摸在你的nginx配置中关闭了favicon的日志记录!