好的,我们使用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?
答案 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