PlayScala 2.5.x - 關閉X-Forwarded-For解析

1. 爲何要關閉X-Forwarded-For解析?

    某些用戶可能會使用透明代理訪問你的網站,透明代理在轉發請求的時候會經過X-Forwarded-For請求頭帶上真實的請求IP地址,默認狀況下,Play會解析這個請求頭並賦值給request.remoteAddress,進而致使在Action中經過request.remoteAddress獲取到的IP地址是一個內網地址,例如192.168.1.2。這些內網地址對地域統計來講沒有任何意義,因此索性就關閉X-Forwarded-For解析,直接獲取代理服務器地址。nginx

2. 如何關閉X-Forwarded-For解析?

    很簡單,只須要在application.conf配置文件中增長一行配置便可關閉全部X-Forwarded-For解析.服務器

play.http.forwarded.trustedProxies = []

3.  如何啓用X-Forwarded-For解析?

     若是使用Nginx作反向代理服務器,修改/etc/nginx/nginx.conf,告訴Nginx添加相應的請求頭:app

http {
    proxy_set_header   X-Real-IP $remote_addr;
    proxy_set_header   X-Forwarded-Proto $scheme;
    proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header   Host $http_host;
    proxy_http_version 1.1;
}

1) 僅信任本地的反向代理服務器

play.http.forwarded.trustedProxies=["::1", "127.0.0.1"]

2) 信任特定的代理服務器

play.http.forwarded.trustedProxies=["192.168.0.0/24", "::1", "127.0.0.1"]

192.168.0.0/24表示整個C類地址段,即192.168.0.0-192.168.0.255。網站

3) 信任全部的代理服務器

play.http.forwarded.trustedProxies=["0.0.0.0/0", "::/0"]

4. 參考

Setting up a front end HTTP serverspa

相關文章
相關標籤/搜索