Я пытаюсь получить данные со своего сервера, но если я попытаюсь с 0.0.0.0/my/api
дает 400, но если я попробую localhost/my/api
он дает то, что мне нужно. Я использую nginx, и вот файл конфигурации для сервера
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
Почему он давал мне только правильный контент с localhost и давал мне 400 с адреса 0.0.0.0? Также это приводит к тому, что я не могу получить доступ к api с внешней машины. Наконец, я использую Gunicorn в качестве внутреннего сервера и использую nginx для обратного прокси-сервера.
Адрес 0.0.0.0 может использоваться только в определенном конкретном контексте на машине Linux. Раньше вы могли использовать 0.0.0.0, и он интерпретировался как адрес обратной связи (127.0.0.1 или localhost).
Адрес 0.0.0.0 теперь используется только для прослушивающих сокетов, чтобы показать, что процесс прослушивает все интерфейсы IPv4. Приятно настроить это, потому что вы можете изменить IP-адрес сервера без перезапуска службы, прослушивающей 0.0.0.0.
Я помню (я мог ошибаться ...), что если вы попытаетесь запустить прослушиватель IP-адреса с интерфейса, у которого есть ссылка, он потерпит неудачу.