您的位置:首页 > 理论基础 > 计算机网络

HTTP简述及应用

2014-08-10 15:08 399 查看
HTTP是一种协议,它大致包含3个部分:HTTP协议,HTML语言,HTTPD服务
【HTTP协议】
版本:
http 0.9
http 1.0
http 1.1
http 2.0
报文类型:
request请求报文
response响应报文
事务:
一次请求和对应的响应
HTTP协议的首部:
通用首部
Connection:定义C/S之间关于请求、响应的有关选项
Connection:keep-alive
Cache-Control:缓存控制
请求首部
Client-IP
Host:请求的主机
Referer:指明了请求当前资源原始资源的URL
User-Agent:用户代理
Accept首部:
Accept:服务端能够发送的媒体类型
Accept-Charset:
Accept-Encoding:
Accept-Language:
条件式请求:
跟安全相关请求:
Authorization:
Cookie:
响应首部
Age:
Server:向客户说明自己的程序名称和版本
协商首部:
Vary:首部列表,服务器会根据列表中的内容挑一个最适用的版本发送给客户端
跟安全相关:
WWW-Authentication:
Set-Cookie:
实体首部
Location:资源的新位置
Allow:允许对此资源使用的请求方法
内容相关的首部:
Content-Encoding:
Content-Language:
Content-Length:
Content-Location:
Content-Type:
缓存相关:
ETag
Expires
Last-Modified
扩展首部
【Web事务相关】
一次Web资源请求的具体过程(服务器角度):
建立连接
接收请求
处理请求
访问资源
构建响应
发送响应
记录日志
连接的关键:
连接套接字:(client,cport<――>server,sport)
监听套接字:80端口
Web服务器的I/O结构:
单进程模型:串行
多进程模型:每个进程响应一个用户请求实现并发的效果
复用的I/O机制:一个进程生成多个线程,每个线程响应一个用户请求
复用的I/O机制:多个线程,每个线程响应多个用户
【HTML语言】
HTML语言的格式:
<html>
<head>
<title>xxx</title>
</head>
<body>
<h1>H1</h1>
<p></p>
<h2>H2</h2>
<p><a href="admin.html">ToGoogle</a></p>
</body>
</html>
【HTTPD服务的结构】
配置文件:
/etc/httpd/conf/httpd.conf
/etc/httpd/conf/*.conf
服务脚本:
/etc/rc.d/init.d/httpd
脚本配置文件:/etc/sysconfig/httpd
模块目录:
/etc/httpd/modules:链接文件
/usr/lib64/httpd/modules
主程序:
/usr/sbin/httpd:prefork
/usr/sbin/httpd.event:event
/usr/sbin/httpd.worker:worker
日志文件目录:
/var/log/httpd
access_log:访问日志
error_log:错误日志
站点文档根目录:
/var/www/html/
=============================================================================
【HTTPD的配置】
1.安装HTTPD服务
#yum -y install httpd
2.修改服务主配置文件
#vi /etc/httpd/conf/httpd.conf
2.1 修改持久连接:
KeepAlive {On|Off}
MaxKeepAliveRequests 100
KeepAliveTimeout 15
2.2 修改MPM参数:
<IfModule prefork.c>
StartServers 8
MinSpareServers 5
MaxSpareServers 20
ServerLimit 256
MaxClients 256
MaxRequestsPerChild 4000
</IfModule>
<IfModule worker.c>
StartServers 4
MaxClients 300
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0
</IfModule>
2.3 指定监听地址和端口:
Listern [IP:]PORT
Listen 12.34.56.78:80
2.4 指定DSO机制装载的模块:
LoadModule Module_Name /path/to/Module_File
LoadModule auth_basic_module modules/mod_auth_basic.so
2.5 指定站点根目录:
DocumentRoot "/path/to/somewhere"
DocumentRoot "/var/www/html"
2.6 站定路径访问控制:
2.6.1 基于本地文件系统路径:
<Directory "/path/to/somewhere">
</Directory>
2.6.1.1 基于Directory中可用的访问控制
<Directory />
Options Indexes FollowSymLinks
//Indexes: 当访问的路径下无默认的主页面,将所有资源以列表形式呈现给用户;危险,慎用。
//FollowSymlinks: 跳跃符号链接。
AllowOverride None
//AllowOverride:支持在每个页面目录下创建.htaccess用于实现对此目录中资源访问时的访问控制功能。
</Directory>
2.6.2 基于URL访问路径做访问控制:
<Location "/path/to/URL">
</Location>
2.6.3 基于基于IP做访问控制:
Order allow,deny
Deny from 172.16.0.0/16
Allow from 192.168.0.0/24
2.6.4 基于用户访问控制:
2.6.4.1 基于用户进行认证:
<Directory "/var/www/html/admin">
Options none
AllowOverride AuthConfig
AuthType Basic
AuthName "Admin Area."
#AuthBasicProvider file
AuthUserFile /etc/httpd/conf/.htpasswd
Require valid-user
</Directory>
2.6.4.2 提供认证文件:
htpasswd
-c: 如果此文件事先不存在,则创建;注意,只能在创建第一个用户时使用;
-m:以md5的格式编码存储用户的密码信息
-D:删除指定用户
2.6.4.3 基于组进行认证:
<Directory "/var/www/html/admin">
Options none
AllowOverride AuthConfig
AuthType Basic
AuthName "Admin Area."
#AuthBasicProvider file
AuthUserFile /etc/httpd/conf/.htpasswd
AuthGroupFile /etc/httpd/conf/.htgroup
Require group GROUP_NAME
</Directory>
2.7 定义默认的主页面:
DirectoryIndex index.html index.html.var
2.8 配置日志功能:
ErrorLog logs/error_log
LogLevel warn
LogFormat "%h %l %u %t \"%r\" %>s %b" common
%h:客户端地址
%l: 远程登录名,通常为-
%u: 认证时输入用户名,没有认证时为-
%t: 服务器收到 用户请求时的时间
%r:请求报名的起始行
%>s: 响应状态码
%b: 响应报文的长度,单位是字节
%{HEADER_NAME}i: 记录指定首部对应的值
CustomLog logs/access_log combined
2.9 路径别名:
Alias /URL/ "/path/to/somewhere/"
Alias /icons/ "/var/www/icons/"
2.10 设定默认字符集:
AddDefaultCharset UTF-8
2.11 虚拟主机:
2.11.1使用前提:
1.取消主服务器
#DecumentRoot
2.定义虚拟主机
NameVirtualHost IP:PORT

<VirtualHost IP:PORT>
ServerName
DocumentRoot
ServerAlias
ErrorLog
CustomLog
</VirtualHost>
2.11.2 配置文件语法检查:
httpd -t
service httpd configtest
2.11.3 虚拟主机的分类:
2.11.3.1 基于端口:
Listen:8080
<VirtualHost 172.16.100.8:8080>
ServerName www.mageedu.com
DocumentRoot "/web/hostc"
</VirtualHost>
2.11.3.2 基于IP:
<VirtualHost 172.16.100.7:80>
ServerName www.mageedu.com
DocumentRoot "/web/hosta"
</VirtualHost>
2.11.3.3 基于主机名:
NameVirtualHost *:80
<VirtualHost 172.16.100.7:80>
ServerName www.mageedu.com
DocumentRoot "/web/hosta"
</VirtualHost>
<VirtualHost 172.16.100.7:8080>
ServerName www.londey.com
DocumentRoot "/web/hostb"
</VirtualHost>
2.12 https过程:
配置httpd工作于https:
2.12.1 安装生成mod_ssl模块
# yum install mod_ssl
2.12.2 为服务端生成私钥,并为其提供证书
# mkdir /etc/httpd/ssl && cd /etc/httpd/ssl
# (umask 077; openssl genrsa -out httpd.key 1024)
# openssl req -new -key httpd.key -out httpd.csr
2.12.3 配置使用https的虚拟主机
SSLCertificateFile
SSLCertificateKeyFile
<VirtualHost IP:443>
DocumentRoot
ServerName
</VirtualHost>
2.12.4 重新装载配置
2.12.5 测试
# openssl s_client -connect IP:PORT -CAfile /path/to/ca_certificate
2.** 以上修改可以只选择自己需要的一部分,启动服务即可。
3.修改网页根目录
#cd /var/www/html/
#vim index.html
this is host A
4.启动服务
#service httpd start
=============================================================================
【虚拟主机的配置】
#vim /etc/httpd/conf/httpd.conf
前提:
Listen 80
Listen 8080 //侦听端口
#DocumentRoot"/var/www/html" //注释掉根目录
1.基于IP:
<VirtualHost 192.168.100.1:80>
DocumentRoot /var/www/html/liaria
</VirtualHost>
2.基于端口:
<VirtualHost 192.168.100.1:80>
DocumentRoot /var/www/html/londey
</VirtualHost>
<VirtualHost 192.168.100.1:8080>
DocumentRoot /var/www/html/liaria
</VirtualHost>
3.基于主机名:
NameVirtualHost *:80
<VirtualHost *:80>
ServerName www.liaria.com
DocumentRoot "/var/www/html/liaria"
</VirtualHost>
<VirtualHost>
ServerName www.londey.com
DocumentRoot "/var/www/html/londey"
</VirtualHost>



--------------------------------------------------------------------------
【https的配置】
1.安装mod_ssl模块
#yum -y install mod_ssl
#cat /etc/httpd/conf.d/ssl.conf
2.服务器端生成私钥,为其提供证书
2.1 为CA生成私钥
#cd /etc/pki/CA
#(umask 077 ; openssl genrsa -out private/cakey.pem 2048)
2.2 为自己创建自签证书
#openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 1000
CNHAZZLiariaDevOpscaserver.liaria.com
2.3 创建序列号文件
#touch serial index.txt
#echo 01 > serial
3. 在httpd下创建文件,并生成私钥,发送申请,并通过申请
#cd /etc/httpd/
#mkdir ssl
#cd ssl/
#(umask 077;openssl genrsa -out httpd.key 1024 )
#openssl req -new -key httpd.key -out httpd.csr
CNHAZZLiariaDevOpswww.liaria.com
#openssl ca -in httpd.csr -out httpd.crt -days 1000
4. 编辑httpd的配置文件
#cd /etc/httpd/conf.d/
#vi ssl.conf
SSLCertificateFile /etc/httpd/ssl/httpd.crt
SSLCertificateKeyFile /etc/httpd/ssl/httpd.key
DocumentRoot "/var/www/html/liaria"
ServerName www.liaria.com
5.配置使用https的虚拟主机
#vi /etc/httpd/conf/httpd.conf
<VirtualHost 192.168.100.1:80>
DocumentRoot /var/www/html/liaria
</VirtualHost>
6.重新装载配置
#service httpd restart
7.测试
7.1 修改本机的hosts文件
C:\Windows\System32\drivers\etc\hosts
192.168.100.2 www.liaria.com
7.2 将证书装到Windows中
/etc/pki/CA/cacert.pem
重命名为cacert.crt
7.3 测试 https://www.liaria.com --------------------------------------------------------------------------
【基于用户的访问控制】
1. 修改httpd主配置文件:
#vi /etc/httpd/conf/httpd.conf
<Directory "/var/www/html/liaria">
Options none
AllowOverride AuthConfig
AuthType Basic
AuthName "Liaria Area."
AuthBasicProvider file
AuthUserFile /etc/httpd/conf/.htpasswd
Require user liaria
</Directory>
2. 给用户liaria设置密码
#htpasswd -c -m /etc/httpd/conf/.htpasswd liaria



本文出自 “riaair小筑” 博客,请务必保留此出处http://riaair.blog.51cto.com/9177337/1538204
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: