前言
一个站点的两个核心信息为:
默认情况下,apache安装成功后,就默认配置好了一个“站点”,该站点的实际位置是在apache安装目录的htdocs目录,同时也有默认的主机名叫localhost。
单站点配置项
1、端口监听
默认 http 协议通信的端口号是 80 ,不特别指定的话,默认就是 80 端口,比如访问 http://www.php.com,完整的形式应该是 http://www.php.com:80,不同的协议使用的通信端口都是不一样的,比如 ftp 是 21 端口。下面我们修改apache监听的端口,打开我们apache的配置文件,即conf文件夹下的httpd.conf文件
添加了Listen 80后面的几行代码后,表示会同时监听本机所有ip80和8088及8090端口,重启服务器,在浏览器中分别输入http://localhost/和http://localhost:8088/以及http://localhost:8090/都能看到浏览器输出it works表示apache多端口监听配置成功!
2、设置主机(站点)的名字:服务器名和站点名
在配置文件httpd.conf中添加如下代码
ServerName www.abc.com
做了这个配置后还需要确保你的hosts文件中有这个域名对应的ip,没有可以打开这个文件中以管理员身份用记事本或者其他编辑器打开这个文件,添加这个域名对应的ip地址,这个文件在C:\Windows\System32\drivers\etc
目录下,默认是隐藏和只读的。图解操作(Win10)如下:
取消只读(右键这个文件点属性):
用记事本或者其他编辑器以管理员身份打开这个文件做如下添加(红色部分)
ctrl + s保存,重启apache(修改这个文件不用重启,修改apache配置文件需要重启生效)
浏览器器中输入www.abc.com,看到的结果和用默认的locahost访问是一样的,因为现在还没有修改站点的物理路径,还是默认的htdocs文件夹,那么看到的结果必然是it works(index.html的内容)。
3、设置主机(站点)的物理路径
形式:Document “实际物理路径”
重要的观念:站点其实就是一个文件夹 – 我让它做站点,它就是站点
设置方法:
在httpd.conf找到DocumentRoot所在的行将默认的站点htdocs文件夹路径替换成我们新站点的路径,如:
httpd.con修改前:
httpd.con修改后:
D:/AMP是我的apache和php安装的文件夹,现在我让它做站点了
重启apache,浏览器访问结果
目录访问权限及分布式权限
1、目录访问权限
一个站点,就是一个“目录”,每个目录, 应该给其设定“访问
权限”。
设置方法(apache2.2):
<Directory "要设置权限的目录(站点)路径">
# 设置当一个请求中没有给定请求的文件名有没有默认网页(首页)的时候显示文件列表
Options Indexes
# 开启分布式权限
AllowOverride None
# 设置权限控制的先后顺序,只有两种,要么先拒绝后运行,要不下先允许后拒绝
Order Deny,Allow
# Deny 用于设定要拒绝的来源地址或服务器名,几乎没有实际意义
Deny from 拒绝名单,比如Deny from 192,168.2.3 www.abc.com
Allow from 允许名单 比如:Allow from all
# 设置该站点(文件夹)的“默认网页”(首页),可以设置多个,用于请求的时候没有带请求文件名默认访问的网页
DirectoryIndex index.html index.php
</Directory>
设置方法(apache2.4):
<Directory "要设置权限的目录(站点)路径">
# 设置当一个请求中没有给定请求的文件名有没有默认网页(首页)的时候显示文件列表
Options Indexes
# 开启分布式权限
AllowOverride None
# 权限设置,要么拒绝所有,要么允许所有,要么允许指定的主机名或者ip地址
# 拒绝所有的请求
# Require all denied
# 允许所有的请求
Require all granted
# 设置允许的主机域名,多个域名之间用空格隔开
Require host xxx.com
# 设置允许的ip,多个ip之间用空格隔开
Require ip 192.168.5.6
# 设置该站点(文件夹)的“默认网页”(首页),可以设置多个,用于请求的时候没有带请求文件名默认访问的网页
DirectoryIndex index.html index.php
</Directory>
如果我们设置拒绝本机域名或ip或拒绝所有,那么我们通过浏览器访问这个站点将会显示Forbidden,如图:
2、分布式权限
对于目录访问权限配置,它有两个局限:
分布式权限:所谓分布式权限,指的就是对某个目录(站点)的子目录(子文件夹)进行单独的权限控制,并且修改权限后无需重启apache服务器。
设置方法:
1、 在要单独设置权限的子目录的上级站点目录权限中开启分布式权限,即在Directory节点中添加AllowOverride all,如图:
2、 在要设置权限的目录下面新建一个.htaccess文件,文件全名就是.htaccess,所以记事本无法完成该文件的创建,需要一款编辑器创建这种文件,如图。
创建该文件成功后,添加其内容和目录权限设置类似,比如添加如下代码:
保存,那么通过浏览器访问该站点,httpd-2.4.18-win64-VC11文件夹将不会显示在网页上,如图:
这是因为我当前的ip不在它允许的ip之中(拒绝所有)。这就达到了单独控制子目录访问权限,这就是分布式权限。