标签:httpd 功能实现 http-2.2 httpd-2.4
httpd是Apache超文本传输协议(HTTP)服务的主程序。被设计为一个独立运行的后台进程它会建立一个处理请求的子进程或线程的池
一次完整的http请求的处理过程
(1) 建立或处理连接
(2) 接收请求
(3) 处理请求
(4) 访问资源
(5) 构建响应报文
(6) 发送响应报文
(7) 记录于日志中
http协议请求方法
GET 请求指定的页面信息并返回资源主体
HEAD 类似于GET请求只不过返回的响应中没有具体的内容用于获取HTTP首部
POST 向指定服务器提交表单数据进行处理请求。请求报文主体种包含了要传递的数据信息内容。POST请求可能会导致新的资源的建立和/或已有资源的修改。
PUT 从客户端向服务器上传可取代指定的文档的内容的数据资源。
DELETE 请求服务器删除指定的资源。
CONNECT HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
OPTIONS 允许客户端查看服务器的性能。
http协议响应
HTTP响应也是由三个部分组成分别是状态行、消息报头、响应正文
1、状态行格式如下
HTTP-Version Status-Code Reason-Phrase
其中HTTP-Version表示服务器HTTP协议的版本Status-Code表示服务器发回的响应状态代码Reason-Phrase表示状态代码的文本描述。
状态代码有三位数字组成第一个数字定义了响应的类别且有五种可能取值
1xx指示信息--表示请求已接收继续处理
2xx成功--表示请求已被成功接收、理解、接受
3xx重定向--要完成请求必须进行更进一步的操作
4xx客户端错误--请求有语法错误或请求无法实现
5xx服务器端错误--服务器未能实现合法的请求
常见状态代码、状态描述、说明
200 OK //客户端请求成功
400 Bad Request //客户端请求有语法错误不能被服务器所理解
401 Unauthorized //请求未经授权这个状态代码必须和WWW-Authenticate报头域一起使用
403 Forbidden //服务器收到请求但是拒绝提供服务
404 Not Found //请求资源不存在eg输入了错误的URL
500 Internal Server Error //服务器发生不可预期的错误
503 Server Unavailable //服务器当前不能处理客户端的请求一段时间后可能恢复正常
CGI (Common Gateway Interface)
虚拟主机
基于IP
基于PORT
基于HOSTNAME
反向代理
负载均衡
路径别名
丰富的用户认证机制
basic
digest
支持第三方模块
httpd-2.2虚拟主机配置
CentOS 6默认提供的httpd-2.2版本
Httpd安装
yum –y install httpd
查看httpd安装与否
[root@www ~]# rpm -qa | grep httpd httpd-2.2.15-54.el6.centos.x86_64 httpd-tools-2.2.15-54.el6.centos.x86_64
查看httpd安装路径
[root@www conf.d]# rpm -ql httpd | less /etc/httpd /etc/httpd/conf //httpd的配置文件路径 /etc/httpd/conf.d //httpd的配置文件路径 /etc/httpd/conf.d/README /etc/httpd/conf.d/welcome.conf /etc/httpd/conf/httpd.conf /etc/httpd/conf/magic /etc/httpd/logs //httpd的日志文件路径 /etc/httpd/modules //httpd的模块路径 /etc/httpd/run /etc/logrotate.d/httpd /etc/rc.d/init.d/htcacheclean /etc/rc.d/init.d/httpd //httpd的服务文件 /etc/sysconfig/htcacheclean /etc/sysconfig/httpd /usr/lib64/httpd /usr/lib64/httpd/modules /usr/lib64/httpd/modules/mod_actions.so /usr/lib64/httpd/modules/mod_alias.so
配置虚拟主机
[root@www conf]# grep"^NameVirtualHost" /etc/httpd/conf/httpd.conf NameVirtualHost 192.168.99.61:80
配置httpd的basic认证添加httpd认证用户
htpasswd -c -m/etc/httpd/conf/.htpasswd tom htpasswd -m/etc/httpd/conf/.htpasswd jerry htpasswd -m/etc/httpd/conf/.htpasswd mary
也可以配置httpd的basic基于组的认证
vim /etc/httpd/conf/.htgrp mygrps: user1 user2
虚拟主机配置
vim/etc/httpd/conf.d/vhost1.conf <VirtualHost 192.168.99.61:80> DocumentRoot/data/vhosts/www1/wordpress ServerNamewww1.runner.vip ErrorLoglogs/www1.runner.vip-error_log CustomLoglogs/www1.runner.vip-access_log common <Location/server-status> SetHandlerserver-status AuthtypeBasic AuthName"For Administrators" AuthUserFile "/etc/httpd/conf/.htpasswd" #AuthGroupFile "/etc/httpd/conf/.htgrp" #Requiregroup mygrps Requireuser tom user2 </Location> </VirtualHost>
开启httpds支持,需要安装mod_ssl模块
查看是否安装ssl
httpd -M | grep ssl yum –y install mod_ssl [root@www conf]# httpd -M | grep ssl ssl_module (shared)
[root@www ssl]# (umask 077; openssl genrsa -out httpd.key 2048) Generating RSA private key, 2048 bit long modulus ...............+++ ..........+++
生成证书签署请求
CA服务器签署证书
[root@ca CA]# openssl ca -in /tmp/httpd.csr-out /etc/pki/CA/certs/httpd.crt -days 365 Using configuration from/etc/pki/tls/openssl.cnf Check that the request matches the signature Signature ok Certificate Details: Serial Number: 1 (0x1) Validity Not Before: Jul 21 04:15:40 2016 GMT Not After : Jul 21 04:15:40 2017 GMT Subject: countryName = CN stateOrProvinceName =Beijing organizationName = Runner organizationalUnitName = Ops commonName = myadmin.runner.vip emailAddress =myadmin@runner.vip X509v3 extensions: X509v3 Basic Constraints: CA:FALSE Netscape Comment: OpenSSL Generated Certificate X509v3 Subject Key Identifier: 3D:63:98:25:9D:9E:6E:AD:87:58:4E:6B:82:AE:90:AE:DE:77:18:B7 X509v3 Authority Key Identifier: keyid:9B:65:F4:88:E7:A7:10:0F:82:7C:1A:AB:40:83:E3:5A:AE:CA:72:0E Certificate is to be certified until Jul 2104:15:40 2017 GMT (365 days) Sign the certificate? [y/n]:y 1 out of 1 certificate requests certified,commit? [y/n]y Write out database with 1 new entries Data Base Updated
虚拟主机2
/etc/httpd/conf.d/ssl.conf 主要配置 LoadModule ssl_module modules/mod_ssl.so Listen 443 <VirtualHost _default_:443> DocumentRoot"/data/vhosts/myadmin" ServerName myadmin.runner.vip:443 ErrorLog logs/ssl_error_log TransferLog logs/ssl_access_log <Directory"/data/vhosts/myadmin"> Options None AllowOverride None ###禁止192.168.99.51访问第一种做法 #Order deny,allow #Deny from 192.168.99.51 ###禁止192.168.99.51访问第二种做法 Order allow,deny Allow from all Deny from 192.168.99.51 </Directory> SSLCertificateFile /etc/httpd/ssl/httpd.crt SSLCertificateKeyFile /etc/httpd/ssl/httpd.key
访问myadmin.runner.vip测试
本文出自 “迷荼” 博客,谢绝转载!
标签:httpd 功能实现 http-2.2 httpd-2.4
原文地址:http://runingday.blog.51cto.com/2154382/1828350