AmazingCounters.com

Apache服务搭建与详解

0.Internet与中国

1885年台湾建省,首任巡抚刘铭传派人与福州船政联系,使用船政电报学堂毕业生为技术人员,于1887年铺设成功台湾淡水至福州川石海底电缆,

全长117海里。这是我国自行设计安装的第一条海底电缆。此电缆毁于第二次世界大战

我国于1989年开始投入到全球海底光缆的投资与建设中来,并于1993年实现了首条国际海底光缆的登陆(中日之间C-J海底光缆系统);随后在

1997年,我国参与建设的全球海底光缆系统(FLAG)建成并投入运营,这也是第一条在我国登陆的洲际海底光缆

中国连接世界目前共有8条光缆,四个登陆站允许入境,目前我国的登陆站设立在三个城市的四个地区,分别是山东青岛登陆站(隶属中国联通)、

上海崇明登陆站(隶属中国电信)、上海南汇登陆站(隶属中国联通)和广东汕头登陆站(隶属中国电信)

1987920日,在北京ICA王运丰教授和西德卡尔斯鲁厄大学维尔纳·措恩教授的主导下,中华人民共和国大陆地区与外界互联网创建了首个连接。

而中国第一封成功对外发出的电邮则是在1987914日发出,内容为“Across theGreat Wall, we can reach every corner in the world”(越

过长城,走向世界每个角落)

北京时间1987年9月20日,钱天白建立起一个网络节点,通过电话拨号连接到国际互联网,向他的德国朋友发出来自中国的第一封电子邮件:

Across the Great Wall we canreach every corner in the world,自此,中国与国际计算机网络开始连接在一起。

199010

钱天白教授代表中国正式在国际互联网络信息中心的前身DDN-NIC注册登记了我国的顶级域名CN,并且从此开通了使用中国顶级域名CN的国际

电子邮件服务。由于当时中国尚未正式连入Internet,所以委托德国卡尔斯鲁厄大学运行CN域名服务器

199332

中国科学院高能物理研究所租用AT&T公司的国际卫星信道接入美国斯坦福线性加速器中心(SLAC)的64K专线正式开通,专线开通后,美国政府

Internet上有许多科技信息和其它各种资源,不能让社会主义国家接入为由,只允许这条专线进入美国能源网而不能连接到其它地方。尽管如此

,这条专线仍是我国部分连入Internet的第一根专线

1994420

中国实现与互联网的全功能连接,被国际上正式承认为有互联网的国家

1994521

在钱天白教授和德国卡尔斯鲁厄大学的协助下,中国科学院计算机网络信息中心完成了中国国家顶级域名(CN)服务器的设置,改变了中国的CN顶级域

名服务器一直放在国外的历史

19961

中国互联网全国骨干网建成并正式开通,开始提供服务

 

1.http通信原理

基本TCP客户/服务器程序的套接字函数

套接字相关的系统调用:

socket():创建一个套接字    -----      bind():绑定IP和端口    ------         listen():监听    ------         accept():接收请求

connect():请求连接建立     ------  write():发送                    ------          read():接收      ------   close():关闭连接

Socket通信示例:服务器端tcpserver.py

import socket
HOST='127.0.0.1'
PORT=9527
BUFFER=4096
sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
sock.bind((HOST,PORT))
sock.listen(3)
print('tcpServer listen at: %s:%s\n\r' %(HOST,PORT))
while True:
    client_sock,client_addr=sock.accept()
    print('%s:%s connect' %client_addr)
    while True:
        recv=client_sock.recv(BUFFER)
        if not recv:
            client_sock.close()
            break
        print('[Client %s:%s said]:%s' %(client_addr[0],client_addr[1],recv))
        client_sock.send('tcpServer has received your message')
sock.close()                            

Socket通信示例:服务器端tcpclient.py

import socket
HOST='127.0.0.1'
PORT=9527
BUFFER=4096
sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
sock.connect((HOST,PORT))
sock.send('hello, tcpServer!')
recv=sock.recv(BUFFER)
print('[tcpServer said]: %s' % recv)
sock.close()

http服务通信过程

Http相关术语

http: Hyper Text Transfer Protocol, 80/tcp

html: Hyper Text Markup Language超文本标记语言,编程语言

 示例:

<html>
<head>
<title>html语言</title>
</head>
<body>
<h1>标题1</h1>
<p><a href=http://www.cnblogs.com/heiye123/.com>黑夜</a>欢迎你</p>
<h2>标题2</h2>
</body>
</html>

CSS: Cascading Style Sheet层叠样式表

js:  javascript

MIMEMultipurpose Internet Mail Extensions  多用途互联网邮件扩展   (在/etc/mime.types)

格式:major/minor

text/plain

text/html

text/css

image/jpeg

image/png

video/mp4

application/javascript

2.http协议介绍

http/0.91991,原型版本,功能简陋,只有一个命令GETGET /index.html ,服务器只能回应HTML格式字符串,不能回应别的格式

http/1.0: 19965,支持cache, MIME, method,每个TCP连接只能发送一个请求,发送数据完毕,连接就关闭,如果还要请求其他资源,就必须

再新建一个连接引入了POST命令和HEAD命令,头信息是 ASCII码,后面数据可为任何格式。服务器回应时会告诉客户端,数据是什么格式,即

Content-Type字段的作用。这些数据类型总称为MIME多用途互联网邮件扩展,每个值包括一级类型和二级类型,预定义的类型,也可自定义类型。

常见Content-Type值:text/xml  、image/jpeg 、audio/mp3等。

http/1.119971月,引入了持久连接(persistent connection),即TCP连接默认不关闭,可以被多个请求复用,不用声明Connection: keep-alive

。对于同一个域名,大多数浏览器允许同时建立6个持久连接;引入了管道机制(pipelining),即在同一个TCP连接里,客户端可以同时发送多个请求,

进一步改进了HTTP协议的效率

新增方法:PUTPATCHOPTIONSDELETE,同一个TCP连接里面,所有的数据通信是按次序进行的。服务器只能顺序处理回应,前面的回应慢,

会有许多请求排队,造成"队头堵塞"Head-of-line blocking

为避免上述问题,两种方法:一是减少请求数,二是同时多开持久连接。网页优化技巧,比如合并脚本和样式表、将图片嵌入CSS代码、域名分片等

HTTP 协议不带有状态,每次请求都必须附上所有信息。请求的很多字段都是重复的,浪费带宽,影响速度

Spdy2009,谷歌研发,解决 HTTP/1.1 效率不高问题

http/2.02015年,头信息和数据体都是二进制,称为头信息帧和数据帧复用TCP连接,在一个连接里,客户端和浏览器都可以同时发送多个请求或回

应,且不用按顺序一一对应,避免了队头堵塞“,此双向的实时通信称为多工(Multiplexing

引入头信息压缩机制(header  compression,头信息使用gzipcompress压缩后再发送;客户端和服务器同时维护一张头信息表,所有字段都会存

入这个表,生成一个索引号,不发送同样字段,只发送索引号,提高速度

HTTP/2允许服务器未经请求,主动向客户端发送资源,即服务器推送(server push

http工作机制:

静态文件:无需服务端做出额外处理,文件后缀:.jpg, .html, .txt, .js, .css, .mp3, .avi

动态文件:服务端执行程序,返回执行的结果,文件后缀:.asp, .php, .jsp

提高HTTP连接性能:

并行连接:通过多条TCP连接发起并发的HTTP请求

持久连接:keep-alive,长连接,重用TCP连接,以消除连接和关闭的时延,以事务个数和时间来决定是否关闭连接

管道化连接:通过共享TCP连接发起并发的HTTP请求复用的连接:交替传送请求和响应报文(实验阶段)

URI: Uniform Resource Identifier统一资源标识,分为URLURN

URN: Uniform Resource Naming,统一资源命名-----示例: P2P下载使用的磁力链接是URN的一种实现

magnet:?xt=urn:btih:660557A6890EF888666

URL: Uniform Resorce Locator,统一资源定位符,用于描述某服务器某特定资源位置

两者区别:URN如同一个人的名称,而URL代表一个人的住址。换言之,URN定义某事物的身份,而URL提供查找该事物的方法。

URN仅用于命名,而不指定地址

URL组成:<scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<frag>

  • schame:方案,访问服务器以获取资源时要使用哪种协议
  • user:用户,某些方案访问资源时需要的用户名
  • password:密码,用户对应的密码,中间用:分隔
  • Host:主机,资源宿主服务器的主机名或IP地址
  • port:端口,资源宿主服务器正在监听的端口号,很多方案有默认端口号
  • path:路径,服务器资源的本地名,由一个/将其与前面的URL组件分隔
  • params:参数,指定输入的参数,参数为名/值对,多个参数,用;分隔
  • query:查询,传递参数给程序,如数据库,用?分隔,多个查询用&分隔
  • frag:片段,一小片或一部分资源的名字,此组件在客户端使用,用#分隔

 

网站访问量

IP(独立IP):即Internet Protocol,指独立IP数。一天内来自相同客户机IP地址只计算一次,记录远程客户机IP地址的计算机访问网站的次数,

是衡量网站流量的重要指标。

PV(访问量):即Page   View,页面浏览量或点击量,用户每次刷新即被计算一次,PV反映的是浏览某网站的页面数,PV与来访者的数量成正比,

PV并不是页面的来访者数量,而是网站被访问的页面数量

UV(独立访客):即Unique  Visitor,访问网站的一台电脑为一个访客。一天内相同的客户端只被计算一次。可以理解成访问某网站的电脑的数量。

网站判断来访电脑的身份是通过来访电脑的cookies实现的。如果更换了IP后但不清除cookies,再访问相同网站,该网站的统计中UV数是不变的

网站统计:http://www.alexa.cn/rank/

Web服务请求处理步骤:(一次完整的http请求处理过程)

Web访问响应模型(Web I/O

单进程I/O模型:启动一个进程处理用户请求,而且一次只处理一个,多个请求被串行响应

多进程I/O模型:并行启动多个进程,每个进程响应一个连接请求

复用I/O结构:启动一个进程,同时响应N个连接请求

实现方法:多线程模型和事件驱动

多线程模型:一个进程生成N个线程,每线程响应一个连接请求

事件驱动:一个进程处理N个请求

复用的多进程I/O模型:启动M个进程,每个进程响应N个连接请求,同时接收M*N个请求

3.http服务器应用

 

http服务器程序: ----- httpd  apache-----nginx-----lighttpd

http:特性:

高度模块化:core  + modules

DSO: Dynamic Shared Object动态加/卸载

MPMmulti-processing module多路处理模块

MPM工作模式

prefork:多进程I/O模型,每个进程响应一个请求,默认模型一个主进程:生成和回收n个子进程,创建套接字,不响应请求多个子进程:工作work

进程,每个子进程处理一个请求;系统初始时,预先生成多个空闲进程,等待请求,最大不超过1024

worker:复用的多进程I/O模型,多进程多线程,IIS使用此模型一个主进程:生成m个子进程,每个子进程负责生个n个线程,每个线程响应一个请求,

并发响应请求:m*n

event:事件驱动模型(worker模型的变种)一个主进程:生成m个子进程,每个进程直接响应n个请求,并发响应请求:m*n,有专门的线程来管

理这些keep-alive类型的线程,当有真实请求时,将请求传递给服务线程,执行完毕后,又允许释放。这样增强了高并发场景下的请求处理能力

httpd-2.2: event测试版,centos6默认                                           httpd-2.4event稳定版,centos7默认

Httpd安装

版本:CentOS 6: 2.2     CentOS  7: 2.4

安装方式: rpmcentos发行版,稳定,建议使用  编译:定制或特殊需求

CentOS 6程序环境:httpd-2.2

配置文件:/etc/httpd/conf/httpd.conf       /etc/httpd/conf.d/*.conf

检查配置文件语法:

httpd  t

站点网页文档根目录:

/var/www/html

日志文件目录:/var/log/httpd  下  access_log:访问日志      error_log:错误日志

Httpd 2.2常见配置

httpd配置文件的组成:

# grep "Section" /etc/httpd/conf/httpd.conf

### Section 1: Global Environment

### Section 2: 'Main' server configuration

### Section 3: Virtual Hosts

配置格式:directive value  (directive:不区分字符大小写,value:为路径时,是否区分大小写,取决于文件系统)

yum -y install httpd

service httpd start

 

出现这种情况并不是什么错误,可以不用理会,就是配置文件里面缺名造成的,如果看着不顺眼可以修改以下

最好也把/etc/hosts也改了,就是在/etc/hosts 的127.0.0.1后面把主机名加上。

1.在这里把apache的版本号也显示出来了,这样是极不安全的,可以照下面的方法隐藏:改ServerToken那一行,默认full全显示

2.修改监听的IPPort

Listen [IP:]PORT

(1)省略IP表示为0.0.0.0(2) Listen指令至少一个,可重复出现多次;(3)修改监听socket,重启服务进程方可生效

Listen  172.18.64.106:80

Listen  192.168.64.106:8080

3.持久连接

4.更改httpd的MPM机制方式etc/sysconfig/httpd

HTTPD=/usr/sbin/httpd.worker重启服务生效              用pstree -p|grep httpd查看进程和线程

Httpd 2.4与之不同

以动态模块方式提供,配置文件:/etc/httpd/conf.modules.d/00-mpm.conf

httpd M |grep mpm重启服务生效      pstree -p|grep httpd查看进程和线程

###查看静态编译的模块httpd -l

###查看静态编译及动态装载的模块httpd M

###动态模块加载:不需重启即生效

###动态模块路径/usr/lib64/httpd/modules/

httpd-tools 里有个ab工具,可以测httpd性能,经测试prefork的效果比wrker更好(默认)ab -c 100 -n 1000 172.18.64.106/index.html

5. 定义路径别名

格式:Alias /URL/ "/PATH/"
DocumentRoot  "/www/htdocs"
http://www.heiye.com/download/bash.rpm==>/www/htdocs/download/bash.rpm
Alias /download/ "/rpms/pub/"  跳转
http://www.heiye.com/download/bash.rpm==>/rpms/pub/bash.rpm
http://www.heiye.com/images/logo.png==>/www/htdocs/images/logo.png
6.基于用户的访问控制
响应码为:401,拒绝客户端请求,并说明要求客户端提供账号和密码
认证:Authorization:客户端用户填入账号和密码后再次发送请求报文;认证通过时,则服务器发送响应的资源
认证方式两种:
basic:明文
digest:消息摘要认证,兼容性差。
基于basic
第一步:
mkdir  /var/www/html/secret
echo  "<h1>hello heiye</h1>"  >/var/www/html/secret/index.html
第二步:
cd  /etc/httpd/conf.d/
htpasswd  -c  .httpusers  centos
输入密码
第三步:
vim  /etc/httpd/conf.d/test.conf
<directory /var/www/html/secret>
authtype  basic
authname "secret directory"
authuserfile  "/etc/httpd/conf.d/.httpusers"
require user centos
</directory>

测试登录,认证成功

htpasswd    选项    PATH路径    username
-c:自动创建文件,仅应该在文件不存在时使用
-m:md5格式加密
-s:sha格式加密
-D:删除指定用户
当然也可以通过组用户定义的方式设置认证登陆,方法大同小异
7.虚拟主机
站点标识:socket
IP相同,但端口不同
IP不同,但端口均为默认端口
FQDN不同;请求报文中首部Host: www.heiye.com
有三种实现方案:
基于ip:为每个虚拟主机准备至少一个ip地址
基于port:为每个虚拟主机使用至少一个独立的port
基于FQDN:为每个虚拟主机使用至少一个FQDN
注意:一般虚拟机不要与main主机混用;因此,要使用虚拟主机,一般先禁用main主机
禁用方法:注释中心主机的DocumentRoot指令即可
虚拟主机的配置方法:
<VirtualHostIP :PORT>
  ServerName
  FQDN
  DocumentRoot
  “/path"
</VirtualHost>  
建议:上述配置存放在独立的配置文件中
其它可用指令:
ServerAlias:虚拟主机的别名;可多次使用
ErrorLog:错误日志
CustomLog:访问日志
<Directory “/path">
</Directory>
Alias
基于IP的虚拟主机示例:
<VirtualHost172.16.100.6:80>
  ServerName   www.a.com
  DocumentRoot  "/www/a.com/htdocs"
</VirtualHost>
<VirtualHost172.16.100.7:80>
  ServerNamewww.b.net
  DocumentRoot"/www/b.net/htdocs"
</VirtualHost>
<VirtualHost172.16.100.8:80>
  ServerName  www.c.org
  DocumentRoot  "/www/c.org/htdocs"
</VirtualHost>
基于端口的虚拟主机:可和基于IP的虚拟主机混和使用
listen 808
listen 8080
<VirtualHost172.16.100.6:80>
  ServerName  www.a.com
  DocumentRoot  "/www/a.com/htdocs"
</VirtualHost>
<VirtualHost172.16.100.6:808>
  ServerName  www.b.net
  DocumentRoot  "/www/b.net/htdocs"
</VirtualHost>
<VirtualHost172.16.100.6:8080>
  ServerName  www.c.org
  DocumentRoot  "/www/c.org/htdocs"
</VirtualHost>
基于FQDN的虚拟主机:
NameVirtualHost*:80    主配置文件中这一行需要打开,或者写在头部,httpd2.4不需要此指令
<VirtualHost*:80>
  ServerName  www.a.com
  DocumentRoot  "/www/a.com/htdocs"
</VirtualHost>
<VirtualHost*:80>
  ServerName  www.b.net
  DocumentRoot  "/www/b.net/htdocs"
</VirtualHost>
<VirtualHost*:80>
  ServerName  www.c.org
  DocumentRoot  "/www/c.org/htdocs"
</VirtualHost>

8.status页面

LoadModule status_module modules/mod_status.so  模块
<Location /server-status>
  SetHandler server-status
  Order allow,deny
  Allow from 172.18
</Location>
ExtendedStatus On显示扩展信息

把主配置文件中上面那段注释去掉,然后定义号合适的域信息,重启服务就能通过浏览器访问status界面。显示apache的各种status信息。

4.http协议详解

http协议 :http/0.9, http/1.0, http/1.1, http/2.0

http协议:stateless无状态:服务器无法持续追踪访问者来源
http协议无状态方法
cookie:客户端存放
session:服务端存放
http事务:一次访问的过程  包含 请求:request   和  响应:respons

   

Method方法:
GET:从服务器获取一个资源
HEAD:只从服务器获取文档的响应首部
POST:向服务器输入数据,通常会再由网关程序继续处理
PUT:将请求的主体部分存储在服务器中,如上传文件
DELETE:请求删除服务器上指定的文档
TRACE:追踪请求到达服务器中间经过的代理服务器
OPTIONS:请求服务器返回对指定资源支持使用的请求方法
协议查看或分析的工具:tcpdump, wireshark,tshark
http协议状态码分类
status(状态码):
  • 1xx:100-101  信息提示
  • 2xx:200-206  成功
  • 3xx:300-305  重定向
  • 4xx:400-415  错误类信息,客户端错误
  • 5xx:500-505  错误类信息,服务器端错误
http协议常用的状态码
  • 200:成功,请求数据通过响应报文的entity-body部分发送;OK
  • 301:请求的URL指向的资源已经被删除;但在响应报文中通过首部Location指明了资源现在所处的新位置;Moved Permanently
  • 302:响应报文Location指明资源临时新位置Moved Temporarily
  • 304:客户端发出了条件式请求,但服务器上的资源未曾发生改变,则通过响应此响应状态码通知客户端;Not Modified
  • 401:需要输入账号和密码认证方能访问资源;Unauthorized
  • 403:请求被禁止;Forbidden
  • 404:服务器无法找到客户端请求的资源;Not Found
  • 500:服务器内部错误;Internal Server Error
  • 502:代理服务器从后端服务器收到了一条伪响应,如无法连接到网关;Bad Gateway
  • 503–服务不可用,临时服务器维护或过载,服务器无法处理请求
  • 504网关超时

http协议首部

首部的分类:
通用首部、请求首部、响应首部、实体首部、扩展首部
通用首部:Date:、报文的创建时间、Connection:连接状态,如keep-alive(长连接)、closeVia:显示报文经过的中间节点(代理,网关)、
Cache-Control:控制缓存,如缓存时长、MIME-Version:发送端使用的MIME版本

5.httpd调整优化

1.mod_deflate模块:使用mod_deflate模块压缩页面优化传输速度

有时候网站流量很大,CDN按流量收费,这时候就可以启动压缩功能,但会比较耗费cpu等资源
适用场景:(1)节约带宽,额外消耗CPU;同时,可能有些较老浏览器不支持    (2)压缩适于压缩的资源,例如文本文件
LoadModule deflate_module modules/mod_deflate.so
SetOutputFilter DEFLATE
# Restrict compression to these MIME types
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE text/css  

把上面代码加到/etc/httpd/conf.d/目录下以conf结尾的文件中,如test.conf重启服务即可(默认的压缩比例为9,最高)

测试:源文件1.7M,实际压缩后只有150k左右,压缩效果非常明显

排除特定旧版本的浏览器,不支持压缩
Netscape 4.x只压缩text/html
BrowserMatch ^Mozilla/4   gzip-only-text/html
Netscape 4.06-08三个版本  不压缩
BrowserMatch     ^Mozilla/4\.0[678]      no-gzip
Internet Explorer标识本身为“Mozilla / 4”,但实际上是能够处理请求的压缩。如果用户代理首部匹配字符串“MSIE”(“B”为单词边界”),就关闭之前定义的限制
BrowserMatch\bMSI[E] !no-gzip !gzip-only-text/html
 
2.https:http over ssl
SSL会话的简化过程
(1)客户端发送可供选择的加密方式,并向服务器请求证书
(2)服务器端发送证书以及选定的加密方式给客户端
(3)客户端取得证书并进行证书验证如果信任给其发证书的CA
  (a)验证证书来源的合法性;用CA的公钥解密证书上数字签名
  (b)验证证书的内容的合法性:完整性验证
  (c)检查证书的有效期限
  (d)检查证书是否被吊销
  (e)证书中拥有者的名字,与访问的目标主机要一致
(4)客户端生成临时会话密钥(对称密钥),并使用服务器端的公钥加密此数据发送给服务器,完成密钥交换
(5)服务用此密钥加密用户请求的资源,响应给客户端
注意:SSL是基于IP地址实现,单IP的主机仅可以使用一个https虚拟主机
https实现
(1)为服务器申请数字证书测试:通过私建CA发证书
(a)创建私有CA
(b)在服务器创建证书签署请求
(c) CA签证
(2)配置httpd支持使用ssl,及使用的证书
yum-y install   mod_ssl  重启服务即可用https 访问
配置文件:/etc/httpd/conf.d/ssl.conf
DocumentRoot
ServerName
SSLCertificateFile
SSLCertificateKeyFile
(3)测试基于https访问相应的主机
openssl     s_client    [-connecthost:port]     [-cert filename]     [-CA   path   directory ]     [-CA   file  filename]
3.http重定向
https将http请求转发至https的URL重定向
Redirect   [status](状态码)    URL-path URL
status状态:
Permanent:Returnsa permanent redirect status(301) indicating that the resource has moved  permanently
Temp:Returns  a temporary redirect status (302).  (默认)
This is the default
示例:Redirect temp / https://www.heiye.com/ 把这行加到/etc/httpd/conf.d/test.conf里即可
https实现基于密钥加密的更加方式,但代价是性能的急剧下降,据测试https与http性能相差可达10倍以上!
HSTS:HTTP Strict Transport Security 服务器端配置支持HSTS后,会在给浏览器返回的HTTP首部中携带HSTS字段。浏览器获取到
该信息后,会将所有HTTP访问请求在内部做307跳转到HTTPS。而无需任何网络过程
HSTS preload  list是Chrome浏览器中的HSTS预载入列表,在该列表中的网站,使用Chrome浏览器访问时,会自动转换成HTTPS。
Firefox、Safari、Edge浏览器也会采用这个列表
实现HSTS示例:
vim /etc/httpd/conf/httpd.conf  (也可以加在test.conf中)
Header always set Strict-Transport-
Security "max-age=15768000"
RewriteEngine    on
RewriteRule     ^(/.*)$ https://%{HTTP_HOST}$1    [redirect=301] 
整个原理就是从第二次请求开始,浏览器将在内部自动跳转,不用在请求回应后跳转。
MPM(多路处理模块)prefork ,worker ,event
4.http反向代理 
启用反向代理
ProxyPass        "/" "http://www.example.com/"
ProxyPassReverse          "/" "http://www.example.com/"
特定URL反向代理
ProxyPass      "/images"     "http://www.example.com/"
ProxyPassReverse         "/images"      http://www.example.com/
示例:
<VirtualHost *>
  ServerName     www.heiey.com
  ProxyPass   / http://localhost:8080/
  ProxyPassReverse     / http://localhost:8080/
</VirtualHost>

补充

1.若主配置文件和conf.d/下的文件各自都有定义且冲突,则主配置文件生效,nginx也是如此

2.若httpd中有啊allow和deny,则后者默认优先级高

3.若多个域名对应一个IP,到达同一主机,则服务器可通过识别请求指令的头部信息中的host信息把相应的虚拟主机信息回应给客户端。

4.curl工具

curl [options] [URL...]   
-A/--user-agent <string>设置用户代理发送给服务器  curl  -A  "googlebrower"    http://172.18.64.106/   可伪造浏览器等信息
 -e/--referer<URL> 来源网址  可伪造跳转地址  curl  -e  www.baidu.com   http://172.18.64.106/
--cacert<file> CA证书 (SSL)
-k/--insecure允许忽略证书进行SSL连接     curl  -k   https://172.18.64.106/
-i  显示页面内容,包括报文首部信息  curl  -i http://172.18.64.106
-I/--head  只显示响应报文首部信息   curl -I  http://172.18.64.106
直接curl则会只显示实体内容。
5.elinks工具:
elinks  [OPTION]... [URL]...
-dump:非交互式模式,将URL的内容输出至标准输出
-source:打印源码
6.httpd自带的工具程序
htpasswd:basic认证基于文件实现时,用到的账号密码文件生成工具
apachectl:httpd自带的服务控制脚本,支持start和stop (注意用apachectl启动必须用apachectl 停止,service 亦同)
apxs:httpd-devel包提供,扩展httpd使用第三方模块工具
rotatelogs:日志滚动工具    日志文件达到一定大小后会把旧的文件改名生成新的文件
suexec:访问某些有特殊权限配置的资源时,临时切换至指定用户身份运行
httpd的压力测试工具ab,webbench,http_load,seige
ab   [OPTIONS]   URL  来自httpd-tools包
-n:总请求数
-c:模拟的并行数   ab  -c  100 -n 1000  http://172.18.64.106/
-k:以持久连接模式测试
ulimit   –n  #  调整能打开的文件数
7.httpd2.4默认开启sendfile机制,处理速度性能更块
 
 
posted @ 2017-10-29 15:08  黑夜繁星  阅读(2728)  评论(0编辑  收藏  举报
AmazingCounters.com