我有一个在Nginx和Gunicorn上运行的Django应用程序,在app中我有一个clients.py
文件,其中一个方法从外部服务器接收后期数据并处理它们,映射到该方法的django url是
url(r'^client/client_request/$', clients.externalclient)
除非从我的服务器获得200 OK响应,否则外部服务器不会发布数据。 我可以在nginx日志中记录发布的数据但是无法在django app中将它们捕获到我的方法,这是我的Nginx配置
server{
listen 80;
server_name 00.00.000.000;
error_log /var/log/nginx/error.log;
large_client_header_buffers 4 16k;
# Tell nginx to ignore favicon
location = /favicon.ico { access_log off; log_not_found off; }
location / {
proxy_pass http://127.0.0.1:8000/;
proxy_set_header X-Forwarded-Host $server_name;
proxy_set_header X-Real-IP $remote_addr;
}
location /assets/ {
autoindex on;
alias /var/www/html/dev2_assets/;
}
location client/client_post/{
proxy_set_header X-Forwarded-Host $server_name;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
keepalive_requests 10;
keepalive_timeout 75s;
proxy_redirect http://00.00.000.00/ /client/client_post;
}
}
这是接收帖子请求的django方法
from django.http import HttpResponse
def externalclient(request):
if request.method == 'POST':
print "Request received"
else:
print "Method not allowed"
任何能够看到错误的人都将不胜感激。谢谢。
答案 0 :(得分:0)
首先:检查缩进。我甚至建议先检查./manage.py runserver
第二:如果您需要正确的http响应,而不是return HttpResponse
而不是print