2013-01-02 59 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是問題! –