Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux Nginx为什么我的服务器在本地主机上提供正确的内容,而不是0.0.0.0_Linux_Django_Nginx_Server - Fatal编程技术网

Linux Nginx为什么我的服务器在本地主机上提供正确的内容,而不是0.0.0.0

Linux Nginx为什么我的服务器在本地主机上提供正确的内容,而不是0.0.0.0,linux,django,nginx,server,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;

我试图从我的服务器获取数据,但是如果我尝试从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;
    }
}
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      8080/nginx
另外,如果我做了一个netstat,我会为服务器得到这个

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;
    }
}
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。

看起来您的输出是来自
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
表示“所有ip地址”

Localhost将具体由单词
Localhost
表示,如上所示

另外,
server\u name
指令不需要为这样一个简单的
nginx.conf
指定,其中您只有一个
服务器


p.p.S.在您的nginx配置中关闭favicon的日志记录,触感很好

看起来您的输出是来自
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
表示“所有ip地址”

Localhost将具体由单词
Localhost
表示,如上所示

另外,
server\u name
指令不需要为这样一个简单的
nginx.conf
指定,其中您只有一个
服务器


p.p.S.在您的nginx配置中关闭favicon的日志记录,触感很好

0.0.0.0
不是服务器的IP地址。
ifconfig
显示什么?如果在设置中设置了
DEBUG=False
,则需要确保正确设置了
ALLOWED\u HOSTS
。因此,如果它只包含
'127.0.0.1'
,那可能是您的问题。@csinchok我将它从
允许的\u主机=['localhost']
更改为
允许的\u主机=['0.0.0']
,但它仍然不工作。@RichardSmith当您说无法从
0.0.0.0/my/api获取数据时,它会显示内部专用的aws ip x.x.x.x.x.x.x.x,这可能是因为这是“本地网络上的所有IP”的元数据,所以它不知道去哪里。如果您使用的是localhost,请使用127.0.0.1
0.0.0
不是服务器的IP地址。
ifconfig
显示什么?如果在设置中设置了
DEBUG=False
,则需要确保正确设置了
ALLOWED\u HOSTS
。因此,如果它只包含
'127.0.0.1'
,那可能是您的问题。@csinchok我将它从
允许的\u主机=['localhost']
更改为
允许的\u主机=['0.0.0']
,但它仍然不工作。@RichardSmith当您说无法从
0.0.0.0/my/api获取数据时,它会显示内部专用的aws ip x.x.x.x.x.x.x.x,这可能是因为这是“本地网络上的所有IP”的元数据,所以它不知道去哪里。如果您使用的是localhost,请使用127.0.0.1