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