我正在尝试从我的服务器获取数据,但如果我从 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。
最佳答案
看起来您的输出是 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
具体表示,如上所示。
附言server_name
指令不需要为这样一个简单的 nginx.conf
指定,您只有一个 server
block 。
附言在您的 nginx 配置中关闭 favicon 的日志记录真是太棒了!
关于linux - Nginx 为什么我的服务器在本地主机上提供正确的内容而不是 0.0.0.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40223730/