ServerAdmin:一般而言每一个站点都应该给它指定服务器管理员,此处指定ServerAdmin的邮箱;
ServerName:服务器名字,若不启用此指令,就意味着服务器在启动时(service httpd start)会反向解析当前的IP地址到某一个主机名,若能解析成功,就将那个主机名作为服务器名字,否则可能会报错(Warning)。在基于主机名的虚拟主机中这项是必须的;
UseCononicaName:(CononicaName:正式名称)表示服务器自身如何在URL上实现自我引用的;
DocumentRoot:文档根目录,即网页文件的存放位置;
此项可定义:
事实上每一个定义的网页文件所在位置的路径,/var/www/html目录中的网页能够被哪些主机访问以及如何被访问是有其属性定义的。怎么定义呢?对于每一个本地路径,URL路径与本地文件系统路径不是一码事。一般而言,URL是相对于DocumentRoot的路径而言的。在配置文件中我们可以定义DocumentRoot这个对应路径下每一个文件能够被哪些IP地址的客户端访问以及如何被访问,而且它还可以定义在访问的时候是否需要提供账号密码的。只需要使用容器<Directory>定义即可,如:
Options:就是定义这个目录下的所有网页文档能够在被访问的时候的访问属性的。其后可以跟多个值,如果有多个的话彼此之间用空格隔开,每一个值叫一个选项。值有:
- None:
默认值,不支持任何选项;
- Indexs:
允许索引目录,即如果没有主页会把DocumentRoot路径下所有文件列出来供选择。此做法非常不安全,因此生产环境下一定不要允许Indexs。但在作为下载站使用的时候可以将它启用起来;
- FollowSymLinks:
允许访问符号链接指向的源文件,如果在网页路径下有一个文件是符号链接,那么是否允许访问符号链接真正指向的那个文件,如:
(如果没有必要一定要将这个功能关闭,况且这会降低服务器的执行速度)
- Includes
允许执行服务器端包含的SSI格式的文件,也是不安全的;
- SymLinksifOwnerMatch
允许访问与执行httpd进程的属主相匹配的符号链接
- ExecCGI
允许运行CGI脚本
- MultiViews
多功能视图,内容协商,能够根据客户端来源的语言或文字判断应该显示哪一种网页给客户端的一种机制,如:发现客户的操作系统是汉语的,就返回汉语的页面,很消耗资源,一般不显示;
- ALL
启用所有选项;
AllowOverride:允许覆盖访问控制机制控制法则,覆盖AllowOverride下面的两项即Order,下面两项定义服务器的访问控制列表;
AllowOverride值可选:
- None:不让下面两项失效;
- AuthConfig:用的最多,使用认证配置去覆盖用户请求,意味着需要基于一个文件,用户的账号密码需要认证后才能访问。需要注意的是此处httpd的账号密码不是/etc/passwd中的账号密码,而是自己建立一个文件中的账号密码,如:在/etc/httpd/conf下建立一个口令文件,这个文件放的是用户的密码,建完这个文件后只允许这个文件中的某个账号访问,我们在访问的时候输入密码才能访问。因此可限定某些敏感的站点只能让那些可以通过访问认证的用户才能访问;
AuthConfig的功能实现:
在实现功能之前,我们先来了解一下与AllowOverride的AuthConfig配合使用的选项:
AuthType:认证类型,有两种,分别是Basic与Digest;
AuthName:在用户认证时显示的字符串,作为提示信息使用;
AuthUserFile:指定认证用户的时候用户认证的账号密码文件;
Require user:指定允许登录的用户;
AuthGroupFile:基于组认证时指定认证的组名的文件。需要注意组文件的建立只需组名后用:隔开后面一大堆用户名即可;
Require group:指定允许哪个组登录;
Require valid-user:只要出现在账号文件中的用户都可登录
- 基于用户的认证实现:
htpasswd #专门用来新建存放账号文件的命令;
-c:新建文件;
-m:使用md5加密;
添加第一个用户:
添加第二个用户:
注意:添加第一个用户时使用-c选项用于创建文件,此后再添加用户时不能再使用-c选项,否则会覆盖前面创建的用户;
使用浏览器访问出现认证:
输入账号密码可进入:
- 基于组认证:
(在基于用户认证的基础上修改)
注意:组文件中的指定的用户必须在此前的账号密码文件即/etc/httpd/conf/htpasswd中已创建。
Order:用于定义基于主机的控制访问功能;此处基于主机指的是能够实现基于IP地址、网络地址或主机定义,但Order本身并不是定义访问控制机制的,Order只是说明谁是默认原则的;
Order allow,deny(表示先allow后deny)
Allow from...
Deny from...
如:仅允许192.168.241.0/24这个网络访问:(此时deny是默认法则)
不允许192.168.241.0/24这个网络访问:(此时allow是默认法则)
拒绝192.168.241.1和172.16.100.177这两个主机的访问:
测试配置文件语法的正确性:
Order地址的表示方式:
- IP
- network/netmask
- HOSTNAME:www.a.com
- DOMAINNAME:a.com
- Partial IP:(部分IP)172.16、172.16.0.0/16
需要注意的是,在httpd2.4中,不再使用AllowOverride机制了!
httpd -M #Apache支持的所有额外装载的模块;
dir_module:支持用户在自己家目录里建立个人的网页文件的;
UseDir:指定在用户家目录下哪一个目录里放置网页文件,即指定用户家目录下建立网站文件的目录,默认为不支持在用户家目录下建立个人网页文件。每一个用户家目录的权限为700,其它人访问不到,包括httpd进程的Apache用户,因此需要让用户家目录具有访问权限,此种方式不太安全;
若想启用,如下即可:
此时每一个用户只要在其家目录下建一个publi_html目录,在其中放置网页文件即可。
此时可测试访问,访问的URL格式如:192.168.241.10/~hadoop(~后加用户名,~是必须的)
继续查看配置文件:
DirectoryIndex:定义在访问路径未指定页面时,默认访问的页面,优先级自左而右匹配;
AccessFileName:支持每目录的访问控制,在网站的任何路径下创建子目录,若子目录中有网页文件,这个子目录的网页文件能否被访问到,也是可以定义单独的访问控制法则的,可在此目录下新建一个.htaccess文件,将访问控制机制(AuthTypeBasic)写进去,只有那一个目录访问的时候才需要。但是这个东西让Apache的执行效率极低,因此一般禁用;
File:只对指定文件生效的容器,而File后的~代表的是做模式匹配的,如:"^\.ht"表示以.ht开头;
TypeConfig:用于定义哪个配置文件中保存的MIME支持的类型,/etc/mime.type中定义了有哪些非二进制文件
DefaultType:若未指定类型,默认为text/plain(纯文本)类型;
IfModule表示如果mod_mime_magic.c存在;
HostnameLookups:定义日志文件中是否记录主机名。为on表示每一个用户的IP地址都会被反解成主机名记录,极其浪费资源而且速度慢;查看日志:tail /var/log/httpd/access_log
ErrorLog:定义错误日志;
LogLevel:日志级别;
LogFormat:日志格式;具体参见Apache官方文档说明。(%...为宏,%h为客户端地址,%l以哪个用户的身份(远程主机登录的用户名),%u登录网站需要使用的用户,%t日志事件产生的时间,%r请求报文的第一行,%>s最后一个请求的对应的状态码,%b响应报文的大小,%{Referer}i显示网站用户访问的来源,%{User-Agent}i客户端浏览器类型...)
CustomLog:定义访问日志的日志文件及类型(参见文档);
Alias:别名;
若网站的根目录在/web/html下,若通过http://172.16.100.1/bbs/a.html,那么这个bbs指的是什么?这个bbs是/web/html下的一个目录,而http://172.16.100.1/bbs/image/logo.jpeg意味着在/web/html下有bbs/image/logo.jpeg。而别名指的是,跟了一个路径,但这个路径却不在/web/html目录下,如:访问了http://172.16.100.1/bbs/image/logo.jpeg,但网页文件可能在另外一个位置。如把/www/forum定义了一个别名叫bbs就意味着再使用这个路径访问bbs/images/logo.jpeg就表示在/www/forum下有一个images/logo.jpeg,所以此时bbs不再对应的是网页根文件下的目录,而是映射到另外一个位置的别名,这个路径可以不在网页根路径下。
别名举例:
注意:若在/luntan后加了/,那么/bbs/forum后也必须加上/,若不加/,那么/bbs/forum后不能加/,需要保持一致。
elinks:纯文本的浏览器,在纯文本界面下,浏览网页的工具;
elinks URL
-dump:把网页内容显示出来之后立即退出,不再进入交互式模式;
-source:显示网页的源码;
如:elinks 192.168.241.10,通过交互式模式打开一个网页,消去了所有图片的浏览器界面,以纯文本方式浏览界面。
在远程连接的模式下,由于语言不匹配可能会显示成乱码;
网站统计指标:
PV:Page View,每天的页面访问量,一般指的是每天统计的;
UV:User View,每天的独立IP访问量,来自同一个IP地址的访问量,指一天有多少个独立IP访问;
小结:
定义网站文档目录
访问选项:options
基于主机的访问控制
用户或组的访问控制
用户个人站点
错误日志
日志格式
访问日志 PV、UV
路径别名