标签:http https
一、基础概念介绍:
1、媒体类型:
html text/html类型
txt text/plain类型
jpeg image/jpeg类型
gif image/gif类型
2、方法:客户端希望服务器端对资源执行的动作
GET:从服务器获取一份web资源
HEAD:只从服务器获取文档的首部
POST:向服务器发送需要处理的数据(一般是表单提交)
PUT:将请求报文的主体部分存储到服务器上
DELETE:从服务器删除一份文件
3、 连接的输入/输出处理结构:
单进程web服务器:启动一个进程接收请求,而且一次只处理一个请求;当处理结束后再接收并处理后续的请求;
多进程web服务器:启动多个进程,每个进程处理一个请求,每来一个请求生成一个进程;预生成模型,事先生成多个空闲子进程;进程池(线程池);
复用I/O的web服务器:一个进程响应多个请求;基于事件驱动模式实现;
复用I/O的多线程web服务器:一个进程响应n个请求;启动m个进程;同时能处理的请求数:n*m
4、主程序:
/usr/sbin/httpd MPM模式默认
/usr/sbin/httpd.event
/usr/sbin/httpd.worker
httpd特性之 MPM:Multipath Processing Module(多路处理模块)
prefork: 多进程模型,每个进程响应一个请求;稳定性好,但并发能力有限;预先生成多个空闲进程; 由于prefork使用select()系统调用,所以最大并发不能超过1024;
worker:多进程模型,每个进程可生成多个线程,每个线程响应一个请求;预先生成多个空闲线程;
event:一个进程直接响应n个请求;可同时启动多个进程;
httpd-2.2: 测试使用;
httpd-2.4: 可生产使用;
高度模块化:core + modules,
DSO: Dynamic Shared Object
httpd -l: 显示编译进核心的模块
httpd -M: 显示DSO模块
<IfModule prefork.c>
StartServers 8 (启动8个空闲进程)
MinSpareServers 5 (最少空闲进程为5)
MaxSpareServers 20 (最大空闲进程为20)
ServerLimit 256 (最多客户端数)
MaxClients 256 (最多客户端数)
MaxRequestsPerChild 4000 (每个子进程最大处理多少个请求,就关闭)
</IfModule>
<IfModule worker.c>
StartServers 4 (启动进程数)
MaxClients 300
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25 (每个进程最多启动多少个线程)
MaxRequestsPerChild 0
</IfModule>
5、日志介绍:
ErrorLog logs/error_log:定义错误日志文件路径;
LogLevel warn
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
%h Remote host
%l Remote logname (from identd, if supplied)
%u Remote user (from auth; may be bogus if return status (%s) is 401)
%t Time the request was received (standard english format)
%r First line of request
method url version
%s Status. For requests that got internally redirected, this is the status of the *original* request --- %>s for the last.
%b Size of response in bytes, excluding HTTP headers. In CLF format, i.e. a ‘-‘ rather than a 0 when no bytes are sent.
%{Foobar}i The contents of Foobar: header line(s) in the request sent to the server.
%{referer}i: 跳转至当前页面之前来源的上一次所在的页面;
%{User-Agent}i:用户代理;
详情请参考:http://httpd.apache.org/docs/2.2/mod/mod_log_config.html#formats
CustomLog logs/access_log combined: 访问日志
指令 日志文件 日志格式名称
6、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> 设置用户代理发送给服务器
-basic 使用HTTP基本认证
--tcp-nodelay 使用TCP_NODELAY选项
-e/--referer <URL> 来源网址
--cacert <file> CA证书 (SSL)
--compressed 要求返回是压缩的格式
-H/--header <line>自定义头信息传递给服务器
-I/--head 只显示响应报文首部信息
--limit-rate <rate> 设置传输速度
-u/--user <user[:password]>设置服务器的用户和密码
-0/--http1.0 使用HTTP 1.0
用法:curl [options] [URL...]
二、https介绍及配置:
配置过程
(a) 建立私有CA
在CA服务器上配置
#(umask 077; openssl genrsa -out private/cakey.pem 2048)
#openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 3650
#echo 01 > serial
#touch index.txt
(b) 为服务器生成证书
在httpd服务器上配置
#mkdir certs/
#(umask 077; openssl genrsa -out httpd.key 2048)
#openssl req -new -key httpd.key -out httpd.csr -days 350
在CA服务器上配置
#openssl ca -in httpd.csr -out httpd.crt -days 360
(c) 配置httpd使用数字证书
注意:ssl会话只能基于IP创建,这意味着如果服务器仅有一个IP,那么仅为一个虚拟主机提供https服务;
安装相应的模块程序包
# yum install mod_ssl
/etc/httpd/conf.d/ssl.conf
/usr/lib64/httpd/modules/mod_ssl.so
编辑/etc/httpd/conf.d/ssl.conf
LoadModule
Listen 443
<VirtualHost IP:PORT>
ServerName
DocumentRoot
SSLEngine on
SSLCertificateFile
SSLCertificateKeyFile
</VirtualHost>
重启httpd服务
三、httpd2.4编译安装:
1、2.4的新特性:
1) MPM支持运行时装载
--enable-mpms-shared=all --with-mpm=prefork|worker|event
2) 支持event MPM
3) 异步读写
4) 支持每模块及每目录分别使用不同的日志级别
5) 增强版的表达式分析器;
6) 支持毫秒级keepalive timeout;
7) 基于FQDN(域名)的虚拟主机不再需要NameVirtualHost;
8) 支持用户使用自定义变量;
新增一些模块:mod_proxy_fcgi, mod_ratelimit, mod_request, mod_remoteip
修改了一些配置机制:不再支持使用order, allow, deny来实现基于IP的访问控制;
2、安装httpd-2.4
依賴于1.4+及以上版本的apr
apr-1.5.0.tar.bz2
apr-util-1.5.3.tar.bz2
httpd-2.4.9.tar.bz2
安装apr::
#./configure --prefix=/usr/local/apr (--prefix指定apr安装的目录)
#make && make install
安装apr-util:
#./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
#make && make install
安装httpd:
# ./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd24
--enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib
--with-pcre --with-apr=/usr/local/apr
--with-apr-util=/usr/local/apr-util/ --enable-modules=most
--enable-mpms-shared=all --with-mpm=prefork
# make && make install
参数介绍:
--sysconfdir=/etc/httpd24 指定配置文件路径
--enable-so 启动模块动态装卸载
--enable-ssl 编译ssl模块
--enable-cgi 支持cgi机制(能够让静态web服务器能够解析动态请求的一个协议)
--enable-rewrite 支持url重写
--with-zlib 支持数据包压缩
--with-pcre 支持正则表达式
--with-apr=/usr/local/apr 指明依赖的apr所在目录
--with-apr-util=/usr/local/apr-util/ 指明依赖的apr-util所在的目录
--enable-modules=most 启用的模块
--enable-mpms-shared=all 以共享方式编译的模块
--with-mpm=prefork 指明httpd的工作方式为prefork
切换使用的MPM:
LoadModule mpm_event_module modules/mod_mpm_event.so
本文出自 “秋天的童话” 博客,请务必保留此出处http://wushank.blog.51cto.com/3489095/1683081
标签:http https
原文地址:http://wushank.blog.51cto.com/3489095/1683081