httpd:Apache超文本传输协议服务器, 是Apache超文本传输协议(HTTP)服务器的主程序。被设计为一个独立运行的后台进程,它会建立一个处理请求的子进程或线程的池。
httpd的特性:
1)高度模块化:核心+模块的方式
2)DSO(Dynamic Shared Object): 支持动态装卸载
3)MPM:Multipath Processiong Module多处理模块
Apache HTTP 服务器被设计为一个功能强大,并且灵活的 web 服务器, 可以在很多平台与环境中工作。不同平台和不同的环境往往需要不同 的特性,或可能以不同的方式实现相同的特性最有效率。Apache 通过模块化的设计来适应各种环境。这种设计允许网站管理员通过在 编译时或运行时,选择哪些模块将会加载在服务器中,来选择服务器特性。
使用MPM的优势:
Apache 能更优雅,更高效率的支持不同的平台Apache
能更好的为有特殊要求的站点定制。例如,要求 更高伸缩性的站点可以选择使用线程的 MPM,即worker或 event,需要可靠性或者与旧软件兼容的站点可以使用 prefork。
MPM的三种模型:
prefork:多进程模型,每个进程响应一个请求;稳定性好,但并发能力有限,预先生成多个空闲进程,select()系统调用,不能超过1024个;
worker:多进程模型,每个进程可生成多个线程,每个线程响应一个请求;预先生成多个空闲进程;
event:一个进程直接响应n个请求,可同时启动多个进程(n*m);基于事件驱动工作。
httpd的功能特性:
虚拟主机:基于HOST,IP,PROT实现虚拟主机
支持CGI:Common Gateway Interface,是一种协议,
反向代理:
负载均衡
路径别名
丰富的用户认证
basic认证
digest认证
支持第三方模块
配置文件位置:
配置文件:
/etc/httpd/conf/httpd.conf
/etc/httpd/conf.d/*.conf
服务脚本:
/etc/rc.d/init.d/httpd
脚本的配置文件:/etc/sysconfig/httpd
模块文件:
/etc/httpd/muludes:符号链接文件
/usr/lib64/httpd/moudles
主程序:
/usr/sbin/httpd:默认的MPM为prefork,多进程模型
/usr/sbin/httpd.work,多线程模型
/usr/sbin/httpd.event,I/O模型
可通过配置/etc/sysconfig/httpd选择工作方式
日志文件目录:
/var/log/httpd
access_log:访问日志
error_log: 错误日志
站点文档目录:
/var/www/html
/etc/httpd/conf/httpd.conf的详细说明
(1) /etc/host
可配置httpd启动的时候不报错
后加本机IP 本机名 别名
/etc/httpd/conf.d/welcome.conf
移除此文件可去掉欢迎界面
/var/www/html/index.html
主页地址
(2)指定监听的地址和端口
Listen [ip:]PROT
注意:Lsten可以出现多次
(3)持久连接
keepAlive off|on
MaxkeepAliveRequests 100 #限制了当启用KeepAlive时,每个连接允许的请求数量。如果将此值设为”0″,将不限制请求的数目
keepAliveTimeout 15
(4) MPM相关
ps aux|grep httpd 查看正在工作的模式
配置文件中查看:Server-Pool Size Regulation
切换工作模式:/etc/sysconfig/httpd
(5) DSO动态装卸载 httpd -l:显示编译进核心的模块 httpd -M:做进模块中的内容
注意:依赖关系
相对路径,相对于SERVERROOT参数所指定的路径ServerRoot:/etc/httpd
service httpd configtest:
httpd -t :配置文件的语法检查
注意:修改了装载的模块后,reload即可生效
(6)指定Main Server的docroot
配置文件中 Section 2
DocumentRoot "":修改路径
例如;/www/htdocs
文件系统路径;/www/htdocs/bbs/upload/a.rar
URL路径:http://Server_IP/bbs/upload/a.rar
注意:section2 和section 3不能同时使用
(7)站点路径访问控制
基于本地文件系统路径,支持级联
<Directory "/path/to/some_directory">
</Directory>
<Directory "/www">
</directory>
基于URL实现
<Location "/path/to/some_url">
</Location>
(8)Directory容器中的访问控制定义
(a)Options
Indexes: 当访问的路径下无主页面时,将所有资源以列表形式呈现给用户,危险,慎用
FollowSymLinks:可以显示链接文件 跟随符号链接指向的源文件
-FollowSymLinks取消选项
None:一个也没有
All:所有
(b)AllowOverride None
(c)基于IP的访问控制
order allow ,deny
allow from all
from后面能接受的地址格式:
IP,Network Address
网络地址格式:
172.16
172.16.0.0
172.16.0.0/16
172.16.0.0/255.255.0.0
ordre allow,deny
Deny form 172.16.100.77 拒绝
Allow from 172.16 开启访问
/var/log/httpd/access_log 正确的访问日志
/var/log/httpd/error_log 错误的访问日志
(9)定义默认的主页面
DirectoryIndex index.html index.html.var
(10)配置日志功能,默认开启
ErrorLog logs/error_log:定义错误日志文件路径
LogLevel warn:日志级别
CustomLog logs/access_log combined: 访问日志
指令日志文件日志格式名称
LogFormat: log/access_log格式
%h Remote host
%l remote logname
%u Romate user
%t time 用户请求收到时的时间
%r First line of request :请求报文的首行
method url version
%b
${Foobar}i
%{Referer}i:跳转至当前页面之前来源的上一次所在的页面
%{User_Agent}i:用户代理
(11)curl命令
curl是基于URL语法在命令行下工作的文件传输工具,它支持ftp,ftps,http,HTTPS,GOPHER,TELNET,DICT,FILE及ldap等协议,curl支持HTTPS认证,并且支持http的post,put等方法,ftp上传,kerberos认证,http上传,代理服务器,cookies,用户名/密码认证,下载文件断点续传,上传文件断点续传,http代理服务器管道(proxy tunneling),甚至它还支持IPv6,socks5代理服务器,通过http代理服务器上传文件到ftp服务器等等,功能十分强大。
curl的常用选项:
-A/--user-agent <string>设置用户代理发送给服务器
-base 使用HTTP基本认证
--tcp-nodelay 使用TCP_NODELAY等选项
-e/--referer <URL> 来源网址
curl -e "URL" http://
--cacert <file> CA证书(SSL)
--compressed 要求返回是压缩的格式
-H/--header <line> 自定义头信息传递给服务器
-I/--head 只显示响应报文首部信息
--limit-rate <rate> 设置传输速度
-u/--user <user[:password]> 设置服务器的用户和密码
-0/--http1.0 使用HTTP1。0
用法:curl [options] URL...
TCP拥塞控制:Nagel算法,为了防止小报文的占用空间,节约网络带宽,为了提高效果,可以关闭这种算法 --tcp-nodelay不激活算法
(12)路径别名
定义方法:
Alias /URL/ "/path/to/some_directory/"
Alias /icons/ "/var/www/icons/"
Alias /bbs/ "/web/forum/" #注意:bbs后可以没有斜杠,则forum后面也没有斜杠
特别注意:selinux需要关闭,否则路径别名不能使用selinux 0
访问方法:
http://172.16.100.8/bbs/images/1.html
(13)设定默认字符集
AddDefaultCharset UTF-8
常用字符集:UTF-8,GBK,GB2312,GB18030
(14)基于用户的访问控制
请求--》质询--》输入账号密码--》访问成功
质询:
www-Autherticate:服务器用401状态拒绝客户端请求,说明需要用户特供用户名密码
认证:
Authorization:客户端填入账号和密码后重新发出请求,包含认证算法,用户名和密码
安全域:secrity realm
docroot:/www/htdocs/
admin/
finance/
相关模块:auth_basic_module modules/mod_auth_basic.so
认证方式:
基本认证:basic
base64编码 存在安全缺陷,较容易还原
摘要认证:digest
cd /www/hddocs
mkdir admin
mkdir /etc/httpd/users
htpasswd命令
-c创建
-m:md5格式
-D:删除
-p:明文加密
配置httpd使用basic认证;
(1)定义security realm
<Directory "/var/www/html/admin"> Options None AllowOverride None #不允许使用.htaccess中的指令 AuthType Basic #基于basic认证 AuthUserFile /etc/httpd/users/.htpasswd #存放文件的位置 Require Valid-user #Valid-user允许账号中的所有用户访问,针对某个用户访问命令require user 用户名 </Directory>
(2)提供用于认证的文件
htpasswd [options] password_fiel username
[root@localhost html]# htpasswd -c -m /etc/httpd/users/.htpasswd tom New password: Re-type new password: Adding password for user tom htpasswd -m /etc/httpd/users/.htpasswd jerry
-c:添加第一个用户时自动创建账号文件,以后再创建用户不需要加-c;
-m:以md5格式加密密码
-s:以sha格式加密
-p:明文
-D:删除指定用户
(3) 组认证: <Directory "/www/htdocs/amdin">
Options None
AllowOverride None
AuthType Basic
AuthName "Admin Area"
AuthGroupFile /etc/httpd/users/.htgroup
AuthUserFile /etc/httpd/users/.htpasswd 自己创建
Require group GRP1,..
</directory>
祖文件:
每行定义一个组,格式
GROUP: user1 user2 user3
(15)虚拟主机
一个物理服务器服务于多个站点,每个站点通过一个虚拟主机来实现
IP:port
httpd支持三种类型的虚拟主机
基于IP
基于port
基于host
注意:取消中心主机main Server,配置完虚拟主机后需要重启服务,否则不生效
#DocumentRoot "/var/www/html"
定义虚拟主机:
基于端口:
<VirtualHost 192.168.1.179:80> ServerName www.ma.com DocumentRoot "/web/www.ma.com" </VirtualHost> <VirtualHost 192.168.1.179:8080> ServerName www.ma.org DocumentRoot "/web/www.ma.org" </VirtualHost>
确保监听状态
Listen 80 Listen 8080
实力3:基于Host Servername 的不同
NameVirtualHost *:80 //启用起来
</VirtualHost 172.16.100.8:80>
ServerName www.ma.com
ServerAlias "bieming" //使用别名
DocumentRoot "/Vhosts/www.ma.com"
</VirtualHost>
</VirtualHost 172.16.100.8:80>
ServerName www.ma.org
DocumentRoot "/Vhosts/www.ma.org"
</VirtualHost>
修改/etc/hosts
curl http://www.magedu.com
culr http://www.magedu.org
三种模式可以混用,日志文件可以独立分开
(16)内置的status页面
mod_status.so
</location /server-status>
SetHandler server-status
Order deny,allow
Deny form all
Allow from 172.16
</Location>
测试URL/server-status
ExtendedStatus On
更详细的status信息