nginx + uwsgi konnte Django nicht bereitstellen, entweder 400 oder 502 ....
伊谢尔伦
伊谢尔伦 2017-05-16 17:28:00
0
1
813

Umgebung:
OS X 10.8.5
Django 1.6
Python 2.7.2
Lassen Sie mich zuerst meine Konfiguration veröffentlichen

[uwsgi]
# socket          = /Users/scarlex/Projects/venv/mysite/white.sock
socket          = 127.0.0.1:3031
chdir           = /Users/scarlex/Projects/venv/mysite/
module          = sakuramai.wsgi:application
home            = /Users/scarlex/Projects/venv
env             = DJANGO_SETTINGS_MODULE=sakuramai.settings
static_files    = false

master          = true
processes       = 5
chmod-socket    = 664
vacuum          = true
stats = 127.0.0.1:9191
upstream white {
    server localhost:3031;
    # server unix:///Users/scarlex/Projects/venv/mysite/white.sock;
}

server {
    listen       80;
    server_name  mysite.com localhost;
    charset utf-8;

    location /static/ {
        alias /Users/scarlex/Projects/venv/mysite/static/
        expires 30d;
    }

    location / {
        uwsgi_pass white;
        include uwsgi_params;
        uwsgi_param UWSGI_SCRIPT django_wsgi;
    }
}

Die Konfiguration basiert im Wesentlichen auf den folgenden zwei Tutorials
https://uwsgi-docs.readthedocs.org/en/latest/tutorials/Django_and_nginx.html
https://docs.djangoproject.com/en/1.6/ howto/ Bereitstellung/wsgi/uwsgi/

Wenn Sie Socket sowohl mit Nginx als auch mit UWSGI verwenden, wird ein 502-Fehler gemeldet,
Folgendes ist in uwsgi immer der Fall und es wird keine Anfrage angezeigt.

*** uWSGI is running in multiple interpreter mode ***
spawned uWSGI master process (pid: 88475)
spawned uWSGI worker 1 (pid: 88476, cores: 1)
spawned uWSGI worker 2 (pid: 88477, cores: 1)
spawned uWSGI worker 3 (pid: 88478, cores: 1)
spawned uWSGI worker 4 (pid: 88479, cores: 1)
spawned uWSGI worker 5 (pid: 88480, cores: 1)
*** Stats server enabled on 127.0.0.1:9191 fd: 17 ***

Wenn Sie 127.0.0.1:3031 verwenden, wird ein 400-Fehler gemeldet.
Aber Sie können in uwsgi sehen, dass Anfragen eingehen.

*** uWSGI is running in multiple interpreter mode ***
spawned uWSGI master process (pid: 88497)
spawned uWSGI worker 1 (pid: 88498, cores: 1)
spawned uWSGI worker 2 (pid: 88499, cores: 1)
spawned uWSGI worker 3 (pid: 88500, cores: 1)
spawned uWSGI worker 4 (pid: 88501, cores: 1)
spawned uWSGI worker 5 (pid: 88502, cores: 1)
*** Stats server enabled on 127.0.0.1:9191 fd: 17 ***
[pid: 88500|app: 0|req: 1/1] 127.0.0.1 () {42 vars in 727 bytes} [Mon Feb 24 15:47:56 2014] GET / => generated 26 bytes in 406 msecs (HTTP/1.1 400) 1 headers in 53 bytes (1 switches on core 0)
[pid: 88501|app: 0|req: 1/2] 127.0.0.1 () {40 vars in 658 bytes} [Mon Feb 24 15:47:57 2014] GET /favicon.ico => generated 26 bytes in 190 msecs (HTTP/1.1 400) 1 headers in 53 bytes (1 switches on core 0)

Ich bin seit zwei Tagen genervt und weiß nicht, wie ich es lösen soll...


Außerdem möchte ich fragen, was die Funktion von include uwsgi_params; in nginx ist.
Ich habe festgestellt, dass uwsgi ohne dies den folgenden Fehler meldet:

Traceback (most recent call last):
  File "/Users/scarlex/Projects/Python-projects/skm2014/lib/python2.7/site-packages/django/core/handlers/wsgi.py", line 196, in __call__
    request = self.request_class(environ)
  File "/Users/scarlex/Projects/Python-projects/skm2014/lib/python2.7/site-packages/django/core/handlers/wsgi.py", line 91, in __init__
    self.method = environ['REQUEST_METHOD'].upper()
KeyError: u'REQUEST_METHOD'
伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

Antworte allen(1)
我想大声告诉你

如果用 nginx 和 uwsgi 都用 socket 的话,会报 502 错误

nginx报502,表示upstream设置有误或者upstream指向的server报错。unix:///Users/scarlex/Projects/venv/mysite/white.sock写法错误,多了两个斜杠,正确的是unix:/Users/scarlex/Projects/venv/mysite/white.sock。从题主贴出的uwsgi配置来看,chmod-socket = 664可能不当,尝试设为chmod-socket = 666。nginx一般是以http用户启动的,664可能无权限写入white.sock。

如果都用 127.0.0.1:3031 的话,都会报 400 错误。

这就跟nginx无关了,纯粹是uwsgi的配置或者django配置有误(如果是自身的脚本源码出错应该报5xx)。如果可能贴出django的settings.py吧。

提供一个可能性的猜测:

Finally, if DEBUG is False, you also need to properly set the ALLOWED_HOSTS setting. Failing to do so will result in all requests being returned as “Bad Request (400)”

https://docs.djangoproject.com/en/1.6/ref/settings/#std%3asetting-ALLOWED_HOSTS

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage