2015-06-07 4 views
-1

Я использую nginx в качестве прокси-сервера для приложения Django с использованием gunicorn. Приложение Django привязано к http://127.0.0.1:8000. И вот моя установка Nginx от и т.д./Nginx/сайты с поддержкой/parkitbackend:Передача JSON от Nginx до Gunicorn

server { 

    server_name AA.BB.CC.DD; 

    access_log off; 

    location /static/ { 
     autoindex on; 
     alias /home/zihe/parkitbackend/parkitbackend/common-static/; 
    } 

    location/{ 
     proxy_pass http://127.0.0.1:8000; 
    } 
} 

Я использую питона запросов модуль:

requests.post("http://AA.BB.CC.DD/dashboard/checkin/", data=unicode(json.dumps(payload), "utf8")) 

размещать объекты JSON в моем Джанго приложение называется приборной панели, где я имеют функцию на панели инструментов/views.py, которая называется checkin для обработки объекта JSON.

У меня не было ошибок при запуске скрипта JSON posting. Тем не менее, Nginx, похоже, не может передать запрос на стрельбу, привязанную к 127.0.0.1:8000. Что мне делать, я могу использовать Nginx для передачи JSON в мое приложение django? Спасибо!


Дополнительные примечания: Я очень уверен, что JSON проводки код и мой Джанго приложение работает правильно, так как я проверил это путем связывания Django приложение http://AA.BB.CC.DD:8000 и побежал этот код в Python:

requests.post("http://AA.BB.CC.DD:8000/dashboard/checkin/", data=unicode(json.dumps(payload), "utf8")) 

и мой Приложение django получило JSON, как ожидалось.

+0

Является ли ваш артиллерист фактически привязанным к порту 8000? Вы запустили 'gunicorn -bind 127.0.0.1:8000 myapp'? – charlesreid1

+0

Выполняют ли какие-либо другие запросы через nginx? –

+0

@ charlesreid1 Да. Я запустил gunicorn parkitbackend.wsgi: application -bind 127.0.0.1:8000. – CykoZ

ответ

0

Я проверил error.log, расположенный в/var/log/nginx /. Оказывается, что JSON я отправлял был слишком велик и дает эту ошибку:

[error] 3450#0: *9 client intended to send too large body: 1243811 bytes, client: 127.0.0.1, server: _, request: "POST /dashboard/checkin/ HTTP/1.1", host: "127.0.0.1" 

После прочтения на этой ссылке: http://gunicorn-docs.readthedocs.org/en/19.3/deploy.html#nginx-configuration

Я уменьшил размер JSON и модифицирована и т.д./Nginx/сайты с поддержкой/parkitbackend быть таким:

upstream app_server { 
    server 127.0.0.1:8000; 
} 

server { 
    listen AA.BB.CC.DD:80; 
    server_name = _; 

    location/{ 
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
     proxy_set_header Host $http_host; 
     proxy_redirect off; 

     proxy_pass http://app_server; 
    } 

    location /static/ { 
     autoindex on; 
     alias /home/username/parkitbackend/parkitbackend/common-static/; 
    } 

} 

и заменить эту строку в /etc/nginx/nginx.conf:

include /etc/nginx/sites-enabled/*; 

с этим:

include /etc/nginx/sites-enabled/parkitbackend; 

И проблема будет решена.

Смежные вопросы