解決Django 1.5非域名訪問產生的500錯誤 原

Django 1.5開始提供了一個新的,而且是必需開啓的特性:通過設置ALLOWED_HOSTS,來限制訪問的域名。只有通過綁定好的域名才能訪問站點,而通過IP地址或非綁定到此站點的方式,則會被拒絕(默認會產生一個500錯誤)。

這是一個非常棒的特性,但他也有一個副作用,那就是會產生一大堆的500錯誤,而如果不懷好意的人,通過掃描IP等方式騷擾你的服務器的話,會讓你不敢其擾,而且在一定程度上也拖慢了系統的反應能力。畢竟產生500錯誤也是要消耗一些計算資源的,而且是昂貴的django資源!

解決的辦法就是,在前端服務器上將非域名訪問直接阻止掉,不讓他透傳到django上。如。在nginx上可以通過以下方式解決:

server {
    listen 80 default;
    location / {
        # or show another site
        return 403 "Forbidden";
    }
}
server {
    listen 80;
    server_name $your_domain;
    location / {
        uwsgi_pass unix:$your_django_sock;
        include uwsgi_params;
    }
}


參考:

http://stackoverflow.com/questions/17149435/avoiding-djangos-500-error-for-not-allowed-host-with-nginx


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章