将后期数据从Nginx传递到Django方法

问题描述 投票:0回答:1

我有一个在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"

请任何能看到错误的人都会受到赞赏。谢谢。

python django nginx gunicorn
1个回答
0
投票

第一:检查缩进。我甚至建议先检查./manage.py runserver

第二:如果你需要正确的http响应,而不是return HttpResponse而不是print

© www.soinside.com 2019 - 2024. All rights reserved.