如何在htaccess中指定从何处获取IP

时间:2014-06-02 16:47:02

标签: php apache .htaccess ip

好的,我们使用htaccess对我们网站上的文件夹进行一些简单的IP身份验证:

order deny,allow
deny from all
allow from 1.1.1.1

但是随着我们所使用的新CDN,实际用户的IP地址来自不同的服务器变量,让我们说:

$_SERVER['absolutely_true_ip'];

,而

$_SERVER['remote_addr'];

不是用户真正的IP

有没有告诉htaccess在哪里寻找我们想要验证的IP?

1 个答案:

答案 0 :(得分:1)

是的,这是可能的。

X-FORWARDED-FOR被大多数服务器(CDN,Proxys)用来发送原始ip(用户ip)。所以这应该是工作:

SetEnvIf X-FORWARDED-FOR 1.1.1.1 allow
order deny,allow
deny from all
allow from env=allow

如果你的CDN有不同的变量名,只需编辑第一行。


修改

如果你想允许多个ip,只需复制第一行:

SetEnvIf X-FORWARDED-FOR 1.1.1.1 allow
SetEnvIf X-FORWARDED-FOR 2.2.2.2 allow
SetEnvIf X-FORWARDED-FOR 3.3.3.3 allow
order deny,allow
deny from all
allow from env=allow