主配置文件/etc/httpd/conf/httpd.conf
主要分为三部分:
- Section 1: Global Environment
- Section 2: 'Main' server configuration
- Section 3: Virtual Hosts
1、Global Environment
ServerRoot "/etc/httpd"
服务器设置的最顶层的根目录logs、modules等数据都放在这个目录下
PidFile run/httpd.pid
进程pid文件,启动服务后,主进程的id号就保存在这个文件里
它是个相对目录。考虑到ServerRoot,因此这个文件的绝对路径为/etc/httpd/run/httpd.pid
Timeout 60
连接等待超时时间60秒
KeepAlive On
是否允许持续性的连接,也就是一个tcp连接可以传送多个文件资料
MaxKeepAliveRequests 100
与keepAlive有关,定义该次连接最大传输数量。0表示不限制。
<IfModule prefork.c>
StartServers 8
MinSpareServers 5
MaxSpareServers 20
ServerLimit 256
MaxClients 256
MaxRequestsPerChild 4000
</IfModule>
关于prefork模式的配置
<IfModule worker.c>
StartServers 3
MaxClients 300
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0
</IfModule>
关于worker模式的配置
Listen 80
默认监听端口
LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule auth_digest_module modules/mod_auth_digest.so
...省略以下
服务加载的模块,如果某些模块不需要,可以注释掉。
Include conf.d/.conf
加载额外配置文件,也就是/etc/httpd/conf.d/.conf文件
User apache
Group apache
定义进程用户和组
2、 'Main' server configuration
ServerAdmin root@localhost
系统管理员邮箱,当网站出现问题时,错误信息会显示的邮箱(错误回报)
ServerName www.example.com:80
设置主机名。千万记得,输入的主机名要找得到IP。
DocumentRoot "/var/www/html"
定义默认的站点网页文档根目录
DirectoryIndex index.html index.html.var
默认主页,当定义的index.html和index.html.var这两个文件不存在,系统会找/var/www/error/noindex.html
站点访问控制的配置
1、基于客户端来源地址
<Directory "/var/www/html">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
-
Options:后跟1个或多个以空白字符分隔的选项列表
在选项前的+, - 表示增加或删除指定选项 - Indexes:表示当主页不存在时,允许用索引方式列出文件列表。如果禁止列出文件列表,去掉这个选项或者在选项前面加上-。
-
FollowSymLinks:允许访问符号链接文件所指向的源文件
None:全部禁用
All: 全部允许 -
AllowOverride None:表示与访问控制相关的指令可以放在指定目录下的.htaccess(由AccessFileName指定)文件中,覆盖之前<directory>里的配置指令。如:
[root@CentOS6 html]#ls -a . .. a.html b.tex .htaccess h.txt [root@CentOS6 html]#cat .htaccess options indexes followSymlinks #这里的.htaccess文件配置的options indexes followSymlinks, #会覆盖 <Directory "/var/www/html">里面相关的配置。
-
order:定义生效次序;写在后面的表示默认法则
- Order allow,deny
- Order deny,allow
- Allow from, Deny from:如果没有该语句,则默认允许所有或者拒绝所有ip访问
- 例1:
<Directory "/var/www/html"> Order allow,deny Allow from all deny from 172.16.100.122 </Directory> #上面的配置allow允许所有ip访问,deny拒绝172.16.100.122。 #由于order定义deny放在allow后面,因此deny会实际生效。
- 例2:
<Directory "/var/www/html"> Order deny,allow Allow from all deny from 172.16.100.122 </Directory> #上面的配置allow允许所有ip访问,deny拒绝172.16.100.122。 #由于order定义allow在后面,因此allow会实际生效,172.16.100.122仍然可以访问/var/www/html。 #如果没有Allow from, Deny from 语句,则默认允许或者拒绝所有ip访问
2、基于用户账号控制访问
<Directory "/var/www/html/admin">
AuthType Basic
AuthName "admin directory"
AuthUserFile "/etc/httpd/conf.d/.httpusers"
Require user httpuser1 httpuser2
</Directory>
上面定义安全域/var/www/html/admin,当用户访问这个目录时,需要账号验证。
用户和密码文件保存在/etc/httpd/conf.d/.httpusers
可访问用户为httpuser1 httpuser2
用户创建命令
[root@CentOS6 conf.d]#htpasswd -c /etc/httpd/conf.d/.httpusers httpuser1
New password:
Re-type new password:
Adding password for user httpuser1
- htpasswd
htpasswd [options] /PATH/HTTPD_PASSWD_FILE username
选项:
-c:创建文件用户文件,仅仅在第一次文件不存在时使用。否则会覆盖源文件。
-m:md5方式加密,默认选项
-s:sha方式加密
-D:删除用户
日志配置
ErrorLog logs/error_log
错误日志保存在/etc/httpd/logs/error_log
/etc/httpd/logs/是个软连接。文件真实路径是
/var/log/httpd/error_log
LogLevel warn
错误日志等级
可选的值包括:debug, info, notice, warn, error,crit,alert,emerg.
LogLevel warn 表示记录warm级以上的日志,即warn, error,crit,alert,emerg
LogFormat "%h %l %u %t "%r" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
定义日志格式。common、referer、agent表示格式的名称
%h:客户端IP地址
%l:远程用户,启用mod_ident才有效,通常为减号“-”
%u:验证(basic, digest)远程用户,非登录访问时,为一个减号“-”
%t:服务器收到请求时的时间
%r:First line of request,即表示请求报文的首行;记录了此次请求的“方法”,“URL”以及协议版本
%>s:响应状态码
%b:响应报文的大小,单位是字节;不包括响应报文http首部
%{Referer}i:请求报文中首部“referer”的值;即从哪个页面中的超链接跳转至当前页面的
%{User-Agent}i:请求报文中首部“User-Agent”的值;即发出请求的应用
CustomLog logs/access_log common
使用上面定义的common这个格式作为日志格式
alias /download/ /app/download/
路径别名定义,格式: Alias /URL/ "/PATH/"
这里的定义表示当用户访问/var/www/html/download时,访问的是/app/download/这个目录