相信大家使用WAMP的时候,会遇到一些问题。本地无法正确访问phpmyadmin或者是外网无法访问Apache,我们列举下列常见。
1.关于内外网访问Apache的限制
刚下载安装的WAMP时候,默认设置是外网无法访问的。即你只能在本地用127.0.0.1或者是localhost来访问WEB应用。那么如何开启外网访问呢?
可见 Apache->httpd.conf
这个文件是用于设置Apache的一些属性。
我们来找这到这个部分
# onlineoffline tag - don't remove
Order Allow,Deny
Deny from all
Allow from 127.0.0.1
分析以上代码含义
onlineoffline tag 这个是表明设置网络是否为单机或者允许外网
那么来讨论Order Allow,Deny 的意义
下列用实例分析:
(4):
Order allow,deny
Allow from all
Deny from 219.204.253.8
–只有219.204.253.8不能通过
allow方向影响的是可以通过一个服务器区域的主机,这个主机可以通过主机名(hostname)、IP地址、IP地址范围或者通过其他的客户端请求条件。与之相反的正是deny,deny控制的是不被服务器所允许的主机,deny的识别方式也是主机名(hostname)、IP地址及范围、或者环境变量等。而位于顶层的Order起到的作用就是制定规则。
(1):
Order deny,allow
–(注意deny与allow之间只有一个逗号,并且只能这样书写,其他写法都是错误的)
Allow from all
Deny from 219.204.253.8
比如上面案例1中,我们的Order为先检查deny后检查allow,那么我们可以把下面 的两句话当做一个list,这两句话没有自然的先后顺序,即检查deny时候,我们发现219.204.253.8这台主机是满足拒绝条件的,那么就进行第二步检测,即allow的检查,发现allow做的事情是:allow from all,意思即全部来源都可以获得通过。这里的关键是,一切访客进来之后都不是一棒子打死的,都要经过两步验证,那么可以发现全部机器都是可以获得通过的,与结果一致。
(2):
Order deny,allow
Deny from 219.204.253.8
Allow from all
–全部都可以通过
案例2中,Order顺序是先deny后allow,那么我们的步骤即在deny规则里面发现219.204.253.8是满足deny规则的,那么进入第二步检查,发现依然是allow all,结果同样是全部允许。这里我们可以得到的结论是,Order语句之后的两个from语句的自然先后顺序是没有关系的,检查的顺序完全是按照Order事先约定好的进行。
(3):
Order allow,deny
Deny from 219.204.253.8
Allow from all
–只有219.204.253.8不能通过
这样来看案例3就比较容易了,我们的Order是先allow后deny,那么deny具有最终决定权,即在allow说通过之后各个访客还需要进行拒绝检查,发现219.204.253.8这台主机是不满足的,那么进行拒绝。案例4可以用同样的方法进行分析。
言归正传,我们要设置那些IP可以访问的时候,可以这么思考
# onlineoffline tag - don't remove
Order Deny,Allow
Deny from all
# 我们是先执行Deny,再执行Allow
#那么我们的思路是否决全部IP,然后再允许部分IP
# Allow from 用户1IP
#Allow from 用户2IP
#Allow from 用户......
# 如果要允许全部IP访问,则可以再全部肯定!
Allow from all
2.关于内外网访问phpMyadmin的限制
如图:
Apache->Alias->phpmyadmin->Edit alias
<Directory "e:/wamp/apps/phpmyadmin3.4.10.1/">
Options Indexes FollowSymLinks MultiViews
AllowOverride all
Order Deny,Allow
Deny from all
Allow from 127.0.0.1
</Directory>
依旧上个分析,设置允许访问的IP
作为安全考虑,我们phpmyadmin一般不建议外网可以访问,毕竟数据库这东西非常重要,但是原理还是应该了解!
3.关于电脑本地DNS的应用(拓展)
但是
在WIN系统下:
C:/->Windows->System32->drivers->etc->hosts
# For example:
#
# 102.54.94.97 rhino.acme.com # source server
# 38.25.63.10 x.acme.com # x client host
# localhost name resolution is handled within DNS itself.
#127.0.0.1 localhost
#::1 localhost
分析:
127.0.0.1 localhost
这个代表localhost这个域名指向了127.0.0.1的IP
这就是为什么我们输入了localhost也可以访问本机的原因!、
DNS的概念是。我们用户输入域名的时候,会优先查找hosts这个文件是否存在相应的映射记录,有则在本地进行地址解析,无者进入外网到DNS服务器解析域名。