如何实现 nginx 套 cloudflare 时实现白名单和获取客户端真实地址?
问题描述:
nginx 对接cloudflare 后,可以使用
set_real_ip_from 173.245.48.0/20; set_real_ip_from 103.21.244.0/22; set_real_ip_from 103.22.200.0/22; set_real_ip_from 103.31.4.0/22; set_real_ip_from 141.101.64.0/18; set_real_ip_from 108.162.192.0/18; set_real_ip_from 190.93.240.0/20; set_real_ip_from 188.114.96.0/20; set_real_ip_from 197.234.240.0/22; set_real_ip_from 198.41.128.0/17; set_real_ip_from 162.158.0.0/15; set_real_ip_from 104.16.0.0/13; set_real_ip_from 104.24.0.0/14; set_real_ip_from 172.64.0.0/13; set_real_ip_from 131.0.72.0/22; real_ip_header CF-Connecting-IP;
来配置获取客户端真实 IP
使用
allow 173.245.48.0/20; allow 103.21.244.0/22; allow 103.22.200.0/22; allow 103.31.4.0/22; allow 141.101.64.0/18; allow 108.162.192.0/18; allow 190.93.240.0/20; allow 188.114.96.0/20; allow 197.234.240.0/22; allow 198.41.128.0/17; allow 162.158.0.0/15; allow 104.16.0.0/13; allow 104.24.0.0/14; allow 172.64.0.0/13; allow 131.0.72.0/22; deny all;
可以配置白名单,只允许客户端从 cf 访问,但是两者结合便无法实现同时生效,请问应该进行配置来实现只允许 cf 接入,并且配置用户真实地址。
第 1 个答案:
server { listen 80; server_name mywebsite.com; set_real_ip_from 173.245.48.0/20; set_real_ip_from 103.21.244.0/22; ... real_ip_header CF-Connecting-IP; location / { allow 173.245.48.0/20; allow 103.21.244.0/22; ... deny all; try_files $uri $uri/ =404; } }
第 2 个答案:
我觉得你那一堆allow也不保险,cloudflare是分布式的CDN,难免IP发生变动甚至有缺漏。
我觉得你可以通过host
头做判断。我看cloudflare会把host头也带过来,因此理论上你只需要一个虚拟主机配置就可以搞定了:
server { listen 80; server_name www.example.com; # 用户在浏览器访问的域名 # ... 你的其他配置 ... }
再加一个默认虚拟主机,全部给deny掉就行了:
server { listen 80 default; server_name _; location / { return 403; } }
组件提示框中的数据想展示在页面的别的位置,请问如何把echarts的组件提示框中的值赋值给另外一个变量?