Django ERROR: En-tête HTTP_HOST invalide: u '/ run / monprojetname / gunicorn.sock:'

Je sais qu'il y a beaucoup de questions de ce genre, mais aucun d'entre eux semblent répondre à ma question en particulier.

Je comprends que Django ALLOWED_HOSTS valeur est de bloquer toutes les requêtes vers le port 80 à mon IP qui ne viennent pas avec les Host: valeur, et que, lorsqu'une demande qui n'a pas la bonne valeur, Django est en baisse de m'envoyer un courriel. Je connais le la nappe de Nginx hack de faire de ce problème de s'en aller, mais j'essaie de comprendre la nature de la demande et de déterminer si c'est un problème de sécurité j'ai besoin de vous en inquiéter.

Demandes comme ces sens:

[Django] ERROR: Invalid HTTP_HOST header: '203.0.113.1'.  You may need to add u'203.0.113.1' to ALLOWED_HOSTS.

Mais ce genre de me reviennent:

[Django] ERROR: Invalid HTTP_HOST header: u'/run/my_project_name/gunicorn.sock:'.

N'est pas ce à dire que le demandeur a envoyé Host: /run/my_project_name/gunicorn.sock pour le serveur? Si oui, comment ont-ils le nom de chemin d'accès pour mon .sock fichier? Est mon serveur en quelque sorte une fuite de cette information?

En outre, comme je suis à court de Django 1.6.5, je ne comprends pas pourquoi je suis la réception de ces e-mails à tous, comme ce billet a été marquée fixe pour un certain temps maintenant.

Quelqu'un peut jeter un peu de lumière sur ce que je suis absent?

C'est mon settings.LOGGING variable:

{
    'disable_existing_loggers': False,
    'filters': {
        'require_debug_false': {'()': 'django.utils.log.RequireDebugFalse'}
    },
    'formatters': {
        'simple': {'format': '%(levelname)s %(message)s'},
        'verbose': {'format': '%(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(message)s'}
    },
    'handlers': {
        'console': {
            'class': 'logging.StreamHandler',
            'formatter': 'verbose',
            'level': 'DEBUG'
        },
        'mail_admins': {
            'class': 'django.utils.log.AdminEmailHandler',
            'filters': ['require_debug_false'],
            'level': 'ERROR'
        }
    },
    'loggers': {
        'django.request': {
            'handlers': ['mail_admins'],
            'level': 'ERROR',
            'propagate': True
        },
        'my_project_name': {
            'handlers': ['console'], 
            'level': 'DEBUG'
        }
    },
    'version': 1
}

Et voici ma config nginx:

worker_processes 1;
pid /run/nginx.pid;
error_log /var/log/myprojectname/nginx.error.log debug;
events {
}
http {
  include mime.types;
  default_type application/octet-stream;
  access_log /var/log/myprojectname/nginx.access.log combined;
  sendfile on;
  gzip on;
  gzip_http_version 1.0;
  gzip_proxied any;
  gzip_min_length 500;
  gzip_disable "MSIE [1-6]\.";
  gzip_types text/plain text/html text/xml text/css
             text/comma-separated-values
             text/javascript application/x-javascript
             application/atom+xml;
  upstream app_server {
    server unix:/run/myprojectname/gunicorn.sock fail_timeout=0;
  }
  server {
    listen 80 default;
    listen [::]:80 default;
    client_max_body_size 4G;
    server_name myprojectname.mydomain.tld;
    keepalive_timeout 5;
    root /var/www/myprojectname;
    location / {
      try_files $uri @proxy_to_app;
    }
    location @proxy_to_app {
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header Host $host;
      proxy_redirect off;
      proxy_pass http://app_server;
    }
    error_page 500 502 503 504 /500.html;
    location = /500.html {
      root /tmp;
    }
  }
}

Enfin, j'ai trouvé ça dans mon nginx journal d'accès. Il correspond à la réception d'un email par le biais de se plaindre à propos de /exécuter/myprojectname/gunicorn.chaussette être un invalide HTTP_HOST en-tête.*

C'était sur une ligne de cours:

2014/09/05 20:38:56 [info] 12501#0: *513 epoll_wait() reported that client
prematurely closed connection, so upstream connection is closed too while sending
request to upstream, client: 54.84.192.68, server: myproject.mydomain.tld, request:
"HEAD /HTTP/1.0", upstream: "http://unix:/run/myprojectname/gunicorn.sock:/"

Évidemment, je ne sais toujours pas ce que cela signifie que 🙁

  • Mise à jour #1: Ajout de mon settings.LOGGING
  • Mise à jour #2: Ajout de ma config nginx
  • Mise à jour #3: Ajout d'une phrase intéressante de mon nginx journal
  • Mise à jour #4: mise à Jour de ma config nginx

source d'informationauteur Daniel Quinn