參考資料: http://www.cnblogs.com/zhuangge/archive/2011/04/13/2014892.html
先引用一下上面資料的內容:
用apache搭建的WEB服務器,如何讓網友只能通過設定的域名訪問,而不能直接通過服務器的IP地址訪問呢,通過查找,有兩個方法可以實現,都是修改httpd.conf文件來實現的,下面舉例說明。
方法一:在httpd.conf文件最后面,加入以下代碼
NameVirtualHost 211.*.*.*
<VirtualHost 211.*.*.*>
ServerName 211.*.*.*
<Location />
Order Allow,Deny
Deny from all
</Location>
</VirtualHost>
<VirtualHost 211.*.*.*>
DocumentRoot "c:/web"
ServerName tuan.coo8.com
</VirtualHost>
說明:藍色部分是實現拒絕直接通過211.*.*.*這個IP的任何訪問請求,這時如果你用211.*.*.*訪問,會提示拒絕訪問。紅色部分就是允許通過http://tuan.coo8.com/這個域名訪問,主目錄指向c:/web(這里假設你的網站的根目錄是c:/web)
方法二:在httpd.conf文件最后面,加入以下代碼
NameVirtualHost 211.*.*.*
<VirtualHost 211.*.*.*>
DocumentRoot "c:/test"
ServerName 211.*.*.*
</VirtualHost>
<VirtualHost 211.*.*.*>
DocumentRoot "c:/web"
ServerName http://tuan.coo8.com
</VirtualHost>
說明:藍色部分是把通過211.*.*.*這個IP直接訪問的請求指向c:/test目錄下,這可以是個空目錄,也可以在里面建一個首頁文件,如index.hmtl,首面文件內容可以是一個聲明,說明不能通過IP直接訪問。紅色部分的意思跟方法一是一樣的。
注意:1. 直接復制粘貼的話可能會帶有中文空格,請把這些多余的空格去掉。
2. 如果使用了負載均衡,限制的IP不要寫外網IP,請填寫內網IP。
最終事例:
理解意思是先建一個虛擬主機,拒絕所有的IP訪問,然后再建一個虛擬主機,只允許指定的域名來訪問。
這個是配置文件的路徑
/usr/local/*/config/apache/vhosts.conf
原來的配置文件內容為:
# Virtual Hosts # default host <VirtualHost *:99> DocumentRoot "/usr/local/*/data/www" ServerName mail.domain.com ErrorLog "logs/mail_error_log" CustomLog "logs/mail_access_log" common </VirtualHost>
修改后可以達到目的的配置文件,這個192.168.1.191為服務器的IP地址,生產環境將其修改為服務器需要訪問的公網Ip地址,並且其中的路徑我將有一個改為*號了,直接復制的也需要改一下。
NameVirtualHost 192.168.1.191 <VirtualHost 192.168.1.191:99> #DocumentRoot "/usr/local/*/data/www" ServerName 192.168.1.191 <Location /> Order Allow,Deny Deny from all </Location> ErrorLog "logs/mail_error_log_ip" CustomLog "logs/mail_access_log_ip" common </VirtualHost> <VirtualHost 192.168.1.191:99> DocumentRoot "/usr/local/*/data/www" ServerName mail.domain.com ErrorLog "logs/mail_error_log" CustomLog "logs/mail_access_log" common </VirtualHost>
最終再重啟一下apache的服務,就可以了。