我有一个安全的网站(.htaccess =全部拒绝),我想允许某些人访问
但是,他们正在使用移动笔记本电脑并且ISP已经为其分配了动态IP
所以,我下载了no-ip client,它应该为他们提供一个可以解析为IP的主机。
然而,当我把
Allow from xxx.no-ip.org
在.htaccess文件中,我仍然会看到禁止的页面。
我允许其他固定IP位置 - 并且正在工作 - 我已经测试了xxx.no-ip.org使用http://www.webyield.net/ipa.php解析为我想要的IP。
我在这里做错了什么想法?
答案 0 :(得分:2)
Apache Allow
和Deny
规则使用通配符(例如Allow from *.example.com
),因此在反向DNS上工作。您的用户的IP地址没有转换为no-ip.org
地址(它们可能解析为特定于ISP的某些内容),因此Apache拒绝他们访问。
您可能最好只为他们提供所有用户名和密码,并使用HTTP身份验证(通过mod_authz_user或类似方式)授予他们访问权限。
答案 1 :(得分:0)
这可以通过使用脚本来实现(根据您的需要进行修改):
#!/bin/bash
# Dynamic IP .htaccess file generator
# Written by Star Dot Hosting
# www.stardothosting.com
dynDomain="$1"
htaccessLoc="$2"
dynIP=$(/usr/bin/dig +short $dynDomain)
echo "dynip: $dynIP"
# verify dynIP resembles an IP
if ! echo -n $dynIP | grep -Eq "[0-9.]+"; then
exit 1
fi
# if dynIP has changed
if ! cat $htaccessLoc | /bin/grep -q "$dynIP"; then
# grab the old IP
oldIP=`cat /usr/local/bin/htold-ip.txt`
# output .htaccess file
echo "order deny,allow" > $htaccessLoc 2>&1
echo "allow from $dynIP" >> $htaccessLoc 2>&1
echo "allow from x.x.x.x" >> $htaccessLoc 2>&1
echo "deny from all" >> $htaccessLoc 2>&1
# save the new ip to remove next time it changes, overwriting previous old IP
echo $dynIP > /usr/local/bin/htold-ip.txt
fi
不仅仅是cron它在.htaccess文件上生成一个新行:
*/15 * * * * /bin/sh /usr/local/bin/.sh yourhostname.no-ip.org /var/www/folder/.htaccess > /dev/null 2>&1