お世話になります。
ELB => Nginx => PHP でアクセス元のIPを取得して国を判別したいと思っております。
以下の記事を参考にして記述をしてみたのですが、なかなかうまくいかずに困っています。
https://christina04.hatenablog.com/entry/2016/10/25/190000
nginx.conf
server { client_max_body_size 512M; root /var/www/html; index index.html index.htm index.php; set_real_ip_from 172.20.0.1/16; real_ip_header X-Forwarded-For; real_ip_recursive on; location / { try_files $uri $uri/ /index.php$is_args$args; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } location ~ .*.php?$ { fastcgi_param REMOTE_ADDR $http_x_real_ip; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_pass unix:/var/run/php-fpm.sock; fastcgi_index index.php; } }
PHP側で取得をしようとすると
PHP
1 if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) { 2 $ipArray = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']); 3 $ip = $ipArray[0]; 4 } else { 5 $ip = $_SERVER['REMOTE_ADDR']; 6 }
172.20.0.1が表示されてしまいます。
どのようにしてアクセス元のIPを取得することが可能でしょうか。
あまりnginxに関して詳しくなく、教えて頂けたら幸いです。
回答3件
あなたの回答
tips
プレビュー