【发布时间】:2015-08-21 20:22:54
【问题描述】:
我使用 nginx 作为使用 gunicorn 的 Django 应用程序的代理服务器。 Django 应用程序绑定到http://127.0.0.1:8000。这是我从 etc/nginx/sites-enabled/parkitbackend 设置的 nginx:
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;
}
}
我正在使用 python 请求模块:
requests.post("http://AA.BB.CC.DD/dashboard/checkin/", data=unicode(json.dumps(payload), "utf8"))
将 JSON 对象发布到我的名为仪表板的 django 应用程序中,我在仪表板/views.py 中有一个名为 checkin 的函数来处理 JSON 对象。
我没有收到运行 JSON 发布脚本的任何错误。但是,Nginx 似乎无法将请求传递给绑定在 127.0.0.1:8000 的 gunicorn。我应该怎么做才能使用 Nginx 将 JSON 传递给我的 django 应用程序?谢谢!
补充说明: 我非常确定 JSON 发布代码和我的 django 应用程序可以正常工作,因为我通过将 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。
【问题讨论】:
-
你的 gunicorn 是否真的绑定到了 8000 端口?你跑
gunicorn --bind 127.0.0.1:8000 myapp了吗? -
其他请求是否通过 nginx 工作?
-
@charlesreid1 是的。我跑了 gunicorn parkitbackend.wsgi:application --bind 127.0.0.1:8000.
-
@DanielRoseman 似乎 nginx 能够很好地提供静态文件。这意味着一些 GET 请求通过了。
-
不,这根本不是这个意思。静态文件不通过 gunicorn/Django。所以问题显然在于 nginx 和 gunicorn 之间的连接。这是你的完整配置吗?
标签: python django nginx gunicorn