2012-08-06 52 views
1

我有一個安全的網站(的.htaccess =所有拒絕),我想允許某些人訪問座/ IP,從使用DNS提供商no-ip.org htaccess的

但是允許,他們正在使用的移動筆記本電腦並具有由ISP

所以,我下載了無IP客戶端,它應該給他們可以解析爲IP主機分配給它們的動態IP地址。

然而,當我把

Allow from xxx.no-ip.org 

在.htaccess文件中,我仍然得到禁止頁面。

我有其他固定的IP位置允許 - 和工作 - 我已經測試xxx.no-ip.org通過使用http://www.webyield.net/ipa.php解析爲我想要的IP。

任何想法,我做錯了什麼?

+0

爲duskwuff指出,沒有IP不利於爲客戶域名沒有在HTTP使用,也沒有辦法爲你的服務器知道它(除了反向DNS這並不適用於DYN amic IPs)。 – Sandman4 2012-08-06 08:38:07

回答

2

阿帕奇AllowDeny規則使用通配符(例如,Allow from *.example.com),並作爲反向DNS這樣的工作。您的用戶的IP地址不會逆轉到no-ip.org地址(他們可能會解決某些特定於ISP的問題),因此Apache拒絕他們訪問。

你可能會做最好只給他們所有的用戶名和密碼,並使用HTTP認證(通過mod_authz_user或類似),以授予訪問權限。

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 

來源:https://www.stardothosting.com