因此我使用nginx作爲django(4個服務器運行)的靜態媒體和負載平衡和龍捲風作爲webserver的簡單設置。我的問題是REMOTE_ADDR沒有得到傳遞給Django的,所以我得到一個KeyError異常:REMOTE_ADDR沒有使用nginx和tornado發送到Django
article.ip = request.META['REMOTE_ADDR']
的遠程地址被打通作爲X-實時IP(HTTP_X_REAL_IP)感謝nginx.conf發送:
location/{
proxy_pass_header Server;
proxy_set_header Host $http_host;
proxy_redirect false;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_pass http://frontends;
}
由於HTTP預先添加到META密鑰中,我不能只執行proxy_set_header remote_addr $ remote_addr。我可以做的是讀取X-Real-IP,如果沒有找到遠程地址鍵,但我很好奇,如果有更聰明的解決方案。
謝謝!
這是不正確的解決方案,但我加了一個Django中間件轉向將HTTP_X_REAL_IP寫入REMOTE_ADDR。 – Nixarn 2009-10-30 15:06:28
這些語句將幫助您: proxy_redirect off; proxy_set_header X-Real-IP $ remote_addr; \t \t proxy_set_header X-Forwarded-For $ proxy_add_x_forwarded_for; \t \t proxy_set_header X-Scheme $ scheme; – glarrain 2013-03-14 16:38:47