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解析,直接获取代理服务器地址。

2. 如何关闭X-Forwarded-For解析?

    很简单,只需要在application.conf配置文件中增加一行配置即可关闭所有X-Forwarded-For解析.

play.http.forwarded.trustedProxies = []

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

     如果使用Nginx做反向代理服务器,修改/etc/nginx/nginx.conf,告诉Nginx添加相应的请求头:

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 server

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏学一学大数据

一文上手zabbix安装配置【运维篇】

1883
来自专栏Java架构师历程

4、服务发现

本书主要介绍如何使用微服务来构建应用程序,现在是第四章。第一章已经介绍了微服务架构模式,并讨论了使用微服务的优点与缺点。第二章和第三章介绍了微服务间的通信,并对...

4743
来自专栏守望轩

Visual Studio 2008 每日提示(二十九)

#291、启动时没有用户代码发出警告 原文链接:What warning message is suppressed by the Warn If No Us...

3865
来自专栏乐沙弥的世界

Linux下编译安装Apache httpd 2.4

1322
来自专栏云计算教程系列

如何在Ubuntu 18.04上安装Redis

Redis是一个内存中的键值存储器,以其灵活性,性能和广泛的语言支持而闻名。它通常用作数据库,缓存和消息代理,并支持各种数据结构。

4022
来自专栏云计算教程系列

如何在CentOS 7上使用Postgres,Nginx和Gunicorn设置Django

Django是一个功能强大的Web框架,可以帮助您启动Python应用程序或网站。Django包含一个简化的开发服务器,用于在本地测试您的代码,但是对于任何与生...

1533
来自专栏闵开慧

tomcat里面的文件详细说明

如何安装tomcat服务器   安装Tomcat之前要先安装JDK,可从http://java.sun.com上下载最新版本的JDK。 Tomcat可从Apac...

40810
来自专栏张戈的专栏

Redhat设置NFS挂载的简单步骤

初识 nfs 还是在测试 lvs 负载均衡的时候,为了保证代码的一致性,将一台 Realserver 作为 nfs 服务器,而其他 Realserver 均以 ...

4304
来自专栏积累沉淀

干货--安装eclipse-hadoop-plugin插件及HDFS API编程两个遇到的重要错误的解决

在Windows的eclipse上写hdfs的API程序,都会遇到两个错误,在网上查了很多资料,都没有解决的办法,经过了很多时间的研究,终于把这个问题解决了 错...

2869
来自专栏逸鹏说道

ifconfig: command not found CentOS专版,其他的可以参考

ifconfig: command not found ? 查看path配置(echo相当于c中的printf,C#中的Console.WriteLine) e...

2798

扫码关注云+社区

领取腾讯云代金券