2013-01-02 63 views
0

我是Nginx新手,我有一些问题,允许webhook访问服务器。每当webhook尝试向我的Django服务器发送POST时,我就在我的访问日志中得到这个:Nginx的Webhook允许IP Django

54.234.20.81 - - [02/Jan/2013:18:11:57 +0000]“POST/contracts /事件HTTP/1.1“403 2319” - “” - “ 54.234.20.81 - - [02/Jan/2013:18:11:58 +0000]”POST/contracts/events HTTP/1.1“403 2319” - “ - “ 54.234.20.81 - - [02/Jan/2013:18:11:58 +0000]”POST/contracts/events HTTP/1.1“403 2319” - “” - “

我不确定如何授予对此IP的访问权限,以免它被禁止。我在Ramhost上托管,而Nginx目录似乎是/ etc/nginx /。该目录有一个nginx.conf,也有一个站点可用文件夹和一个启用站点的文件夹。

这里是网站可用的配置文件(有一个符号链接的网站,启用本文件):

upstream djangoserv { 
server 127.0.0.1:8080; 
} 

server { 
    listen 80; 
    server_name nameblr.com www.nameblr.com; 
    access_log /home/yorango/yorangosite/logs/yorangosite-access.log; 
    error_log /home/yorango/yorangosite/logs/yorangosite-error.log; 

    location /static/ { 
     alias /home/yorango/yorangosite/static/; 
     expires 30d; 
    } 

    location /media/ { 
     alias /home/yorango/yorangosite/static/; 
     expires 30d; 
    } 

    location/{ 
     # host and port to fastcgi server 
     allow 54.242.81.184; 
     include fastcgi_params; 
     fastcgi_pass 127.0.0.1:8080; 
     fastcgi_param PATH_INFO $fastcgi_script_name; 
     fastcgi_param REQUEST_METHOD $request_method; 
     fastcgi_param QUERY_STRING $query_string; 
     fastcgi_param SERVER_NAME $server_name; 
     fastcgi_param SERVER_PORT $server_port; 
     fastcgi_param SERVER_PROTOCOL $server_protocol; 
     fastcgi_param CONTENT_TYPE $content_type; 
     fastcgi_param CONTENT_LENGTH $content_length; 
     fastcgi_pass_header Authorization; 
     fastcgi_intercept_errors off; 
     fastcgi_split_path_info ^()(.*)$; 
    } 
} 

这里是nginx.conf文件,该文件在/ etc/nginx /文件夹。

user www-data; 
worker_processes 1; 

error_log /var/log/nginx/error.log; 
pid  /var/run/nginx.pid; 

events { 
    worker_connections 1024; 
    # multi_accept on; 
} 

http { 
    include  /etc/nginx/mime.types; 

    access_log /var/log/nginx/access.log; 

    sendfile  on; 
    #tcp_nopush  on; 

    #keepalive_timeout 0; 
    keepalive_timeout 65; 
    tcp_nodelay  on; 

    gzip on; 
    gzip_disable "MSIE [1-6]\.(?!.*SV1)"; 

    include /etc/nginx/conf.d/*.conf; 
    include /etc/nginx/sites-enabled/*; 
} 

我不确定是否允许“54.242.81.184;”是在正确的位置,或者网站中的文件如何与nginx.conf一起工作,但任何帮助表示赞赏!

回答

2

你确定问题是Nginx吗?您是否为您的Django项目启用了CSRF保护?我敢肯定,当CSRF检查失败时,Django会发出403。

退房这个问题的更多信息:Django CSRF check failing with an Ajax POST request

+1

这是一个很好的点。但是,即使在我将一个@csrf_exempt装饰器添加到被阻止的视图后,我似乎也遇到了同样的问题。 –

+1

需要杀死服务器并重新启动它。 csrf是问题! –