如何在htaccess中指定从哪里获取IP


How to specify where to get IP from in htaccess

我们对网站上的文件夹使用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 ?

这是可能的。

x - forward - for被大多数服务器(cdn, proxy)用来发送原始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