点击登录,精彩内容等着你

nginx使用技巧:防止伪造,获取真实IP地址,避免XFF攻击

全栈侠客

2022-09-04
XFF头,X-Forwarded-For简称,代表了HTTP的请求端真实的IP。作为客户端通过HTTP代理或者负载均衡器连接到web服务端获取源ip地址的一个标准。通过修改XXF头可以实现伪造IP。

nginx作为服务器分发请求与静态代理,负载均衡的神器,一些必备的使用技巧,是需要我们关注的

1.java后端获取ip的代码片段

  1. //1.通过nginx中获取ip地址
  2. protected String getIp() {
  3. String ip = request.getHeader("X-Real-IP");
  4. if(StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {
  5. ip = request.getHeader("x-forwarded-for");
  6. }
  7. if(StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {
  8. ip = request.getHeader("Proxy-Client-IP");
  9. }
  10. if(StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {
  11. ip = request.getHeader("WL-Proxy-Client-IP");
  12. }
  13. if(StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {
  14. ip = request.getRemoteAddr();
  15. }
  16. return ip;
  17. }

2.ngxin配置ip策略

  1. server代码段,一层nginx代理添加以下内容:
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Real-Port $remote_port;
    proxy_set_header X-Forwarded-For $remote_addr;

  2. server代码段,多层反向代理下,最外层ngxin添加一下内容:
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Real-Port $remote_port;
    proxy_set_header X-Forwarded-For $remote_addr;

  3. 非最外层nginx,可以添加一下内容:
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

  4. 示范代码,展示本地使用nginx的代理分发

    1. server {
    2. listen 8880;
    3. server_name leanboot.com;
    4. #charset koi8-r;
    5. proxy_set_header X-Real-IP $remote_addr;
    6. proxy_set_header X-Real-Port $remote_port;
    7. proxy_set_header X-Forwarded-For $remote_addr;
    8. location / {
    9. proxy_pass http://127.0.0.1:8080/;
    10. }
    11. location /files-server/ {
    12. proxy_pass http://127.0.0.1:8088/;
    13. }
    14. }
阅读 3859     最后编辑 2022-09-26 18:49
文章补充
评论(0) 发表新评论
  • ...暂无评论...

我是有底线的 评论与点赞5分钟更新一次
回复评论
取消关闭

请先登录