Столкнулся с очень не понятной проблемой, потратил целый день на то чтобы понять где и что не так, но не осилил… может тут кто подскажет.
Значит конфигурация такая
centos 6
supertvisor
virtualenv
uwsgi
pip install следующие пакеты: django, MySQL-python, gunicorn
=======
Версии софта:
django - (1, 6, 2, ‘final’, 0)
nginx version: nginx/1.4.7
django дефолтная, ничего не настроено, кроме добавленного gunicorn в INSTALLED_APPS и соединения с базой данных mysql. Из дополнительных опций добавленно в settings.py только эти:
DEFAULT_CHARSET='utf-8'
LOGGING = {'version': 1,}
nginx
### example.conf nginx configuration upstream django { #server 127.0.0.1:8001; # for a web port socket (we'll use this first) server 127.0.0.1:8001 fail_timeout=0; #server unix:///tmp/11111111.sock fail_timeout=0; #через unx socket такая же проблема } server { listen 80; server_name server149; override_charset on;# эту опцию и добавлял и убирал - ничего не меняет source_charset utf-8;# эту опцию и добавлял и убирал - ничего не меняет charset utf-8; client_max_body_size 100M; # adjust according to your needs location /media { alias /home/webapps/vnv/asterisk/asterisk/media; } location /static { alias /home/webapps/vnv/asterisk/asterisk/static; } location / { uwsgi_pass django; override_charset on;# эту опцию и добавлял и убирал - ничего не меняет source_charset utf-8;# эту опцию и добавлял и убирал - ничего не меняет charset utf-8; } error_log /var/log/nginx_debug debug; }
Пример ошибки в ситуации когда manage.py runserver 127.0.0.1:8001, то же самое через gunicorn.
Если напрямую обращаться к адресу 127.0.0.1:8001 - страничка открывается, а вот если через upstream в nginx - выдает следующую проблему.
Starting development server at http://127.0.0.1:8001/ Quit the server with CONTROL-C. [13/Apr/2014 17:59:41] code 400, message Bad HTTP/0.9 request type ('\x00\xaf\x01\x00') ---------------------------------------- Exception happened during processing of request from ('127.0.0.1', 38664) Traceback (most recent call last): File "/usr/lib64/python2.6/SocketServer.py", line 570, in process_request_thread self.finish_request(request, client_address) File "/usr/lib64/python2.6/SocketServer.py", line 332, in finish_request self.RequestHandlerClass(request, client_address, self) File "/home/webapps/vnv/lib/python2.6/site-packages/django/core/servers/basehttp.py", line 126, in __init__ super(WSGIRequestHandler, self).__init__(*args, **kwargs) File "/usr/lib64/python2.6/SocketServer.py", line 627, in __init__ self.handle() File "/usr/lib64/python2.6/wsgiref/simple_server.py", line 131, in handle if not self.parse_request(): # An error code has been sent, just exit File "/usr/lib64/python2.6/BaseHTTPServer.py", line 284, in parse_request "Bad HTTP/0.9 request type (%r)" % command) File "/usr/lib64/python2.6/BaseHTTPServer.py", line 357, in send_error self.send_response(code, message) File "/usr/lib64/python2.6/BaseHTTPServer.py", line 374, in send_response self.log_request(code) File "/usr/lib64/python2.6/BaseHTTPServer.py", line 411, in log_request self.requestline, str(code), str(size)) File "/home/webapps/vnv/lib/python2.6/site-packages/django/core/servers/basehttp.py", line 138, in log_message msg = "[%s] %s\n" % (self.log_date_time_string(), format % args) UnicodeDecodeError: 'ascii' codec can't decode byte 0xaf in position 2: ordinal not in range(128) ---------------------------------------- [13/Apr/2014 17:59:41] code 400, message Bad HTTP/0.9 request type ('\x00I\x01\x00') [13/Apr/2014 17:59:41] "I HTTP_HOST192.168.125.149HTTP_CONNECTION" 400 -
Судя по всему проблема с кодировкой, но где я ее только не менял, ситуацию не исправляет. В конфиге nginx - установил, mysql база данных так же создана так:
CREATE DATABASE IF NOT EXISTS aster DEFAULT CHARACTER SET ‘utf8’ COLLATE ‘utf8_unicode_ci’;
локаль системы en_US.UTF-8, была ru_RU.UTF-8… тоже ничего не изменилось.
Подскажите куда копать дальше?
Заранее спасибо!