参考资料:http://blog.sina.com.cn/s/blog_ed3bdabf0102x0vx.html
apache 2.4的虚拟目录配置与apache2.2的虚拟目录配置有所不同,常出现的问题如下:
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等命令在新版本中也可以得到兼容,实现这个兼容功能的模块就是mod_access_compat。所以Load这个模块后,apache2.4就能识别这些语句了。
但是新的问题随之而来,加载过mod_access_compat之后,apache是可以启动了,却发现无法访问虚拟目录下的文件,提示是没有权限,所以这就涉及到访问权限设置的问题了
关于2.4和2.2访问权限的设置区别如下:
所有的请求都被拒绝
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
在域中的所有主机都可以访问example,所有其他外网主机的访问被拒绝
2.2上的配置
Order Deny,Allow
Deny from all
Allow from example.org
2.4上的配置
Require host example.org
要想外网访问将 Require local 改为 Require all granted 。
经常会用到的: 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的指令,起初我也信以为真,但是亲自试验发现不行,用deny from 是可以的,读者们也可以自己试试
允许所有访问
Require all granted
拒绝所有访问
Require all denied
默认是 Require local 仅允许本地访问。