分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > IT知识

HTTPD

发布时间:2023-09-06 01:06责任编辑:苏小强关键词:暂无标签
  • 一次完整http请求过程(必须掌握)
(1)当用户在浏览器输入一个URL,且回车,会先进行DNS解析请求
(2)客户端拿到DNS解析请求返回的IP之后,去请对应的服务器站点的资源
(3)服务器端判断是否接受请求,如果接收请求,会对请求报文进行解析,分析请求报文的请求头信息,分析请求头的请求资源
(4)服务器端对请求头的请求资源进行解析之后,构建响应头和响应体,组合为响应报文
(5)服务端发送响应报文给客户端,服务端在本地记录http对应的日志信息
(6)客户端解析响应报文




  • http服务器程序类型
(1)httpd(Apache)
(2)nginx
(3)lighted
(4)IIS
(5)tomcat
(6)Tengine
...





基于红帽6RPM包安装的httpd2.2版本、基于红帽7RPM包安装的httpd2.4版本

  • httpd2.2软件配置说明
配置文件: 
???/etc/httpd/conf/httpd.conf 主配置文件
???/etc/httpd/conf.d/*.conf 主配置文件
服务脚本
???/etc/rc.d/init.d/httpd

脚本配置文件:
???/etc/sysconfig/httpd 脚本配置文件中定义了,httpd以哪种MPM模式启动

主程序文件
???/usr/sbin/httpd
???/usr/sbin/httpd.event
???/usr/sbin/httpd.worker

日志文件
???/var/log/httpd:
???????access_log:访问日志
???????error_log:错误日志

站点文档
???/var/www/html

模块文件路径
???/usr/lib64/httpd/modules

启动程序和开机自启
???service {start|stop|restart|status|configtest|reload} httpd
???chkconfig httpd on
  • httpd2.4软件配置说明
配置文件
???/etc/httpd/conf/httpd.conf 主配置文件
???/etc/httpd/conf.d/*.conf 其他配置文件
???/etc/httpd/conf.modules.d/*.conf 模块相关的配置文件

systemd 启动脚本文件 (服务脚本)
???/usr/lib/systemd/system/httpd.service

主程序
???/usr/sbin/httpd ?

日志文件(其中access_log:访问日志,error_log:错误日志)
???/var/log/httpd

中心主机站点根路径
???/var/www/html

模块文件路径
???/usr/lib64/httpd/modules

启动程序和开机自启
???systemctl {start|stop|restart|status|reload} httpd.service
???systemctl enable httpd.service ?# 开机自启

(五)httpd2.2详解

基于红帽6RPM包安装的httpd2.2版本、基于红帽7RPM包安装的httpd2.4版本

  • 配置文件全局介绍
(1)主配置文件:/etc/httpd/conf/httpd.conf 
???全局配置:Section 1: Global Environment 第33行
???中心主机配置: Section 2: ‘Main’ server configuration 第246行
???虚拟主机配置:Section 3: Virtual Hosts 第986行

(2)每一次修改配置文件之后,可以使用httpd -t检查配置文件是否错误,一般如果没有给ServerName值的话会报错,那么给一个IP作为ServerName的值
???httpd -t #检查下配置文件的语法是否错误
(3)在全局配置段,可以修改其监听的端口, 修改监听的端口之后,只有重启服务才能生效,reload不能生效,只能restart
???Listen 80 可以改为:Listen 8000


配置文件详细介绍(超级重要必须掌握)

  • 1:设置监听的端口(很重要)
 ???在全局配置段,可以修改其监听的端口, 修改监听的端口之后,只有重启服务才能生效,reload不能生效,只能restart
???Listen 80 可以改为:Listen 8000
  • 2:持久连接
 ???由于web服务的连接是:基于一个TCP的虚连接,http事务可重复执行多次。例如我们打开https://www.taobao.com,首先返回的是首页的HTML骨架资源,再返回的是CSS级联样式表资源,最后返回的是JavaScript代码资源。TCP连接建立后,每个资源获取完成后不全断开连接,而是继续等待其他资源请求的进行

???KeepAlive On 或 Off :设置TCP保持连接关闭或开启
???KeepAliveTimeout 15 :设置保持连接的超时时长
???MaxKeepAliveRequests 100 : 设置最大保持连接数量
  • 3:MPM机制(多处理模块机制)(很重要)
 ???httpd-2.2不支持同时编译多个MPM模块,所以只能编译选定要使用的那个模块,CentOS 6的rpm包为此专门提供了三个程序文件,httpd(prefork),httpd.worker,httpd.event,分别用于实现对不同的MPM机制的支持。

???当httpd启动时候,可以使用 ps aux ?| awk ‘/httpd$/{print $11}‘ 命令查看当前httpd是以哪一种机制运行的,如果是/usr/sbin/httpd,那么就是以prefork模式运行的,如果是/usr/sbin/httpd.worker,那么就是以worker模式运行的,如果是/usr/sbin/httpd.event,那么就是以event模式运行的。

???使用 httpd -l 命令可以查看编译的核心模块

???使用 httpd -M 查看静态编译及动态编译的模块

???在配置文件中可以配置prefork模式和worker模式的属性信息
???<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>


  • 4:启用或禁用模块(DSO)(很重要)
LoadModule <模块名> <模块相对路径>
例如:LoadModule auth_basic_module modules/mod_auth_basic.so
这里的auth_basic_module是模块名,modules/mod_auth_basic.so是模块文件的路径,如果模块前面没有路径,表示启用相关模块
模块的完全路径是:/etc/httpd/modules/*

  • 5:定义中心主机(重要)
指定DocumentRoot(这是中心主机的站点根目录,中心主机的根站点目录可以更换)
例如:DocumentRoot "/var/www/html"
可以修改为其他的路径:DocumentRoot "/app/www"
  • 6:站定访问控制 
    • 基于两种机制指明对哪些资源进行何种的访问控制
1:基于文件系统路径的访问控制
???<Directory "/var/www/html">
???????这样的访问控制表明,对于/var/www/html目录下的所有的文件均有效
???</Directory>

???<File "某文件路径">
????????这样的访问控制表明,对于某文件路径有效
???</File>

???<FileMatch "模式匹配">
???????这样的访问控制表明,对于被模式匹配到的文件有效
???</FileMatch>

2:基于URL的访问控制
???# 显示httpd服务器的状态信息,这样的访问控制表明,对于访问http://ip:port/server-status都生效
???<Location /server-status>
???????SetHandler server-status
???????Order deny,allow
???????#Deny from all
???????Allow from all
???</Location>

???# 显示httpd软件信息,这样的访问控制表明,LocationMatch中指定的URL的效用
???<LocationMatch "URL">
???????......
???</LocationMatch>

  • 7:Directory访问控制中指令详解
1:Options:用于控制目录中所有的资源被访问的方式,后跟一个或多个以空白字符分割的选项列表
???Indexes:如果输入的网址对应服务器上的一个文件目录,而此目录中又没有DirectoryIndex指令(例如:DirectoryIndex index.html index.http.var),那么服务器会返回由mod_autoindex模块生成的一个格式化后的目录列表,但是如果访问的是根路径就返回Apache的首页信息
???FollowSymLinks:服务器允许在此目录中使用符号连接。如果该配置选项位于<Location>配置段中,将会被忽略。
???一般来说,在Options这一项设置为 None。

2:AllowOverride:与访问控制相关的哪些指令可以放在.htaccess文件(每个目录下都可以有一个)中
???ALL:所有指令都可以放进去
???None:所有指令都不可以放进去

3:order和allow、deny
???Order:定义生效次序,写在后面的表示默认法则
???Allow from all:表明任意网段都可以访问
???Deny from all:表明任意网段都不可以访问

???例如:
???????Allow from 192.168.23.0/24:表示只是允许192.168.23.0网段的主机访问。
???????Allow from 192.168.23.24/32:表示只是允许192.168.23.24主机访问。

  • 8:定义站点的默认主页面
DirectoryIndex index.html index.html.var
如果在站点根目录没有index.html,那么直接在浏览器输入域名就会返回Apache的首页信息
  • 9:给路径取别名
定义格式为:Alias /文件系统路径/ "/别名路径/"
举个例子:
???如果现在你的DocumentRoot "/app/www" : 那么站点的根目录就是/app/www
???此时在浏览器访问http://192.168.23.4/users/index.html,那么在服务器的文件系统上访问的文件为/app/www/users/index.html。
???那么如果指定一个别名:Alias /users/ "/app/www/username/"
???那么此时,在浏览器访问http://192.168.23.4/users/index.html,那么在服务器的文件系统上访问的文件为/app/www/username/index.html。

  • 10:设定默认字符集
AddDefaultCharset UTF-8
  • 11:设定日志的保存级别日志
1:访问日志
???(1)访问日志的四种格式定义如下:
???LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
???LogFormat "%h %l %u %t \"%r\" %>s %b" common
???LogFormat "%{Referer}i -> %U" referer
???LogFormat "%{User-agent}i" agent

???%h:客户端IP地址
???%l:remote user,登入名,通常为“-”号
???%u:远程用户名,非登入时,为-号
???%t:服务器收到请求时的时间
???%r:First line of request,表示请求报文的首行,首行记录了:请求的方法,URL和http协议版本
???%>s:响应的状态码
???%b:不包含http首部的响应报文的大小,单位是字节
???%{Referer}i:请求报文中首部“referer”的值,referer为哪个页面的超链接跳转至当前页面的
???%{User-Agent}i:请求报文中首部的“User-Agent”的值,User-Agent为发出请求的命令程序

???(2)指定访问日志保存在哪里,选择使用哪种访问日志格式
???CustomLog /logs/httpd/httpd_access_log combined

HTTPD

原文地址:http://www.cnblogs.com/liu1026/p/7436444.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved