參考資料:http://blog.sina.com.cn/s/blog_ed3bdabf0102x0vx.html
apache 2.4的虛擬目錄配置與apache2.2的虛擬目錄配置有所不同劫拢,常出現(xiàn)的問題如下:
Invalid command 'Order', perhaps misspelled or defined by a module not included in the server configuration
這個問題的原因可能是LoadModule authz_host_module modules/mod_authz_host.so這個模塊沒有打開,將其前面的#去掉即可强胰,但大多情況下這個模塊是解開的舱沧,那么第二個原因就是版本問題,在Apache2.4版本中偶洋,提供了由mod_authz_host支持的新的配置語法狗唉。而2.2版本中的Order、Allow等命令在新版本中也可以得到兼容涡真,實(shí)現(xiàn)這個兼容功能的模塊就是mod_access_compat分俯。所以Load這個模塊后,apache2.4就能識別這些語句了哆料。
但是新的問題隨之而來缸剪,加載過mod_access_compat之后,apache是可以啟動了东亦,卻發(fā)現(xiàn)無法訪問虛擬目錄下的文件杏节,提示是沒有權(quán)限,所以這就涉及到訪問權(quán)限設(shè)置的問題了
關(guān)于2.4和2.2訪問權(quán)限的設(shè)置區(qū)別如下:
所有的請求都被拒絕
2.2上的配置
Order deny,allow
Deny from all
2.4上的配置
Require all denied
所有請求都是允許的
2.2上的配置
Order allow,deny
Allow from all
2.4上的配置
Require all granted
在域中的所有主機(jī)都可以訪問example典阵,所有其他外網(wǎng)主機(jī)的訪問被拒絕
2.2上的配置
Order Deny,Allow
Deny from all
Allow from example.org
2.4上的配置
Require host example.org
要想外網(wǎng)訪問將 Require local 改為 Require all granted 奋渔。
經(jīng)常會用到的: Require all denied Require all granted Require host xxx.comRequire ip 192.168.1 192.168.2 Require local
舉例說明
僅允許IP:192.168.0.1 訪問
Require ip 192.168.0.1
僅禁止IP:192.168.0.1訪問
Require all granted
deny from 192.168.1.0
ps:有些人說使用的是Require all granted Require not ip 192.168.0.1的指令,起初我也信以為真壮啊,但是親自試驗(yàn)發(fā)現(xiàn)不行嫉鲸,用deny from 是可以的,讀者們也可以自己試試
允許所有訪問
Require all granted
拒絕所有訪問
Require all denied
默認(rèn)是 Require local 僅允許本地訪問歹啼。