首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >代理后的CodeIgniter会话

问代理后的CodeIgniter会话
EN

Stack Overflow用户
提问于 2012-08-15 11:09:58
回答 2查看 5.3K关注 0票数 6

如果没有代理IP列表,会发生什么情况?当使用Akamai,谷歌,Edgecast或CloudFront等网站加速服务时,总是很难从它们那里获得会话的IP。

在CDN上测试codeigniter应用程序时,我们注意到IP是作为CDN IP传递的,而不是会话数据库中的客户端IP。

你怎么能做到这一点呢?

代码语言:javascript
复制
    /*
|--------------------------------------------------------------------------
| 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'] = '';

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-23 16:23:49

根据您使用的web服务器的不同,有一些模块将从HTTP_X_FORWARDED_FOR标头中为您提供真实的客户端IP地址,或者为您的代理提供等效的地址。

我在CloudFlare后面的web服务器上使用Nginx,所以我使用这个:http://wiki.nginx.org/HttpRealipModule

您需要为您的web服务器配置模块,该模块从CDN的正确头中获取真正的客户端IP。

票数 4
EN

Stack Overflow用户

发布于 2017-07-07 23:49:57

如果您希望在Codeigniter 3中处理IP,而不是在web服务器中处理IP,您可以将CDN IP添加到此配置中:

代码语言:javascript
复制
$config['proxy_ips'] = ['10.0.1.2'];

或者指定CDN网络掩码:

代码语言:javascript
复制
$config['proxy_ips'] = '10.0.1.0/24';

如果您的服务器总是在CDN后面:

代码语言:javascript
复制
$config['proxy_ips'] = isset($_SERVER["REMOTE_ADDR"]) ? $_SERVER["REMOTE_ADDR"] : '';

获取IP方法:

代码语言:javascript
复制
$this->input->ip_address(); //$this=>CI

如果匹配代理IP,则返回转发IP,否则返回$_SERVER["REMOTE_ADDR"],可以得到真实的客户端IP。

指的是Codeigniter 3

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11963641

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档