CloudFlareやAWSのELB等間に挟むときのメモ。
クライアント
↓ X-Forwarded-For: “”
Proxy1
↓ X-Forwarded-For: “Client”
Proxy2
↓ X-Forwarded-For: “Client, Proxy1”
ELBやCloudFlare
↓ X-Forwarded-For: “Client, Proxy1, Proxy2”
Nginx
この場合にClientのIPアドレス、つまりX-Forwarded-Forのリストで1番手前のIPアドレスが欲しい場合。
| $remote_addr | アクセス元IP。プロキシが間にある場合は直前のIP |
| set_real_ip_from xxx.xxx.xxx.xxx/xx; | X-Forwarded-Forを偽装しないための設定。このIPからのアクセスのみ書き換える |
| real_ip_header X-Forwarded-For; | $remote_addrをアクセス元(X-Forwarded-Forの一番最後のIPアドレス)に書き換える。 |
| real_ip_recursive on; | real_ip_headerによって書き換えられた$remote_addrをX-Forwarded-Forの一番最初のIPアドレスに書き換える。デフォルトはoff |
include /etc/nginx/IP_CloudFlare; real_ip_header X-Forwarded-For; #real_ip_recursive on;
#!/bin/bash
ngx=/etc/nginx
conf=IP_CloudFlare
prefix=set_real_ip_from
array=(ips-v4 ips-v6)
echo -n > $confname
for i in "${array[@]}"
do
wget -O - https://www.cloudflare.com/${i} | while read line
do
echo "$prefix $line;" >> $ngx/$conf
done
done




コメント