6

プロキシIPのリストがない場合はどうなりますか?Akamai、Google、Edgecast、CloudFrontなどのサイトアクセラレーションサービスを使用する場合。それらからセッションのIPを取得することは常に困難です。

CDNでcodeigniterアプリケーションをテストしたところ、IPがセッションデータベースのクライアントIPではなくCDNIPとして渡されていることがわかりました。

どうすればこれを回避できますか?

    /*
|--------------------------------------------------------------------------
| Reverse Proxy IPs
|--------------------------------------------------------------------------
|
| If your server is behind a reverse proxy, you must whitelist the proxy IP
| addresses from which CodeIgniter should trust the HTTP_X_FORWARDED_FOR
| header in order to properly identify the visitor's IP address.
| Comma-delimited, e.g. '10.0.1.200,10.0.1.201'
|
*/
$config['proxy_ips'] = '';

ありがとう!

4

2 に答える 2

4

使用するWebサーバーに応じて、HTTP_X_FORWARDED_FORヘッダーまたはプロキシに相当するものから実際のクライアントIPアドレスを提供するモジュールがあります。

CloudFlareの背後にあるWebサーバーでNginxを使用しているので、これを使用します:http ://wiki.nginx.org/HttpRealipModule

CDNの正しいヘッダーから実際のクライアントIPを取得するWebサーバーのモジュールを構成する必要があります。

于 2013-05-23T08:23:48.993 に答える
0

Codeigniter 3ではIPを処理するが、Webサーバーでは処理しない場合は、次の構成にCDNIPを追加できます。

$config['proxy_ips'] = ['10.0.1.2'];

またはCDNネットワークマスクを与える:

$config['proxy_ips'] = '10.0.1.0/24';

サーバーが常にCDNの背後にある場合:

$config['proxy_ips'] = isset($_SERVER["REMOTE_ADDR"]) ? $_SERVER["REMOTE_ADDR"] : '';

IPメソッドを取得します。

$this->input->ip_address(); //$this=>CI

一致したプロキシIPの場合はフォワードIPを返し、そうでない場合$_SERVER["REMOTE_ADDR"]は実際のクライアントIPを取得する可能性のあるを返します。

Codeigniter3を参照する

于 2017-07-07T15:49:57.383 に答える