使用django來獲取用戶訪問的IP地址,如果用戶是正常情況下
request.META['REMOTE_ADDR']
可以獲得用戶的IP地址。但是有些網(wǎng)站服務(wù)器會(huì)使用ngix等代理http,或者是該網(wǎng)站做了負(fù)載均衡,導(dǎo)致使用remote_addr抓取到的是1270.0.1,這時(shí)使用HTTP_X_FORWARDED_FOR才獲得是用戶的真實(shí)IP。推薦使用以下代碼:
if request.META.has_key('HTTP_X_FORWARDED_FOR'):
ip =? request.META['HTTP_X_FORWARDED_FOR']
else:
ip = request.META['REMOTE_ADDR']
參考鏈接:http://m.blog.csdn.net/bravezhe/article/details/7374934
使用以上方法在服務(wù)器上出現(xiàn)添加的頁面無法訪問,用print(request.META['HTTP_X_FORWARDED_FOR']) 和 print(request.META['REMOTE_ADDR'])前者打印出客戶端正常IP后者打印處127.0.0.1證明IP獲取正常(網(wǎng)站服務(wù)器使用的是nginx),所以
if request.META.has_key('HTTP_X_FORWARDED_FOR'): 此處語法應(yīng)該有錯(cuò)誤
最后去掉該判斷語句,網(wǎng)站正常訪問。