如果没有代理IP列表,会发生什么情况?当使用Akamai,谷歌,Edgecast或CloudFront等网站加速服务时,总是很难从它们那里获得会话的IP。
在CDN上测试codeigniter应用程序时,我们注意到IP是作为CDN IP传递的,而不是会话数据库中的客户端IP。
你怎么能做到这一点呢?
/*
|--------------------------------------------------------------------------
| 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'] = '';谢谢!
发布于 2013-05-23 16:23:49
根据您使用的web服务器的不同,有一些模块将从HTTP_X_FORWARDED_FOR标头中为您提供真实的客户端IP地址,或者为您的代理提供等效的地址。
我在CloudFlare后面的web服务器上使用Nginx,所以我使用这个:http://wiki.nginx.org/HttpRealipModule
您需要为您的web服务器配置模块,该模块从CDN的正确头中获取真正的客户端IP。
发布于 2017-07-07 23:49:57
如果您希望在Codeigniter 3中处理IP,而不是在web服务器中处理IP,您可以将CDN IP添加到此配置中:
$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。
https://stackoverflow.com/questions/11963641
复制相似问题