HTTPD

  • 一次完整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

时间: 2024-10-21 13:42:05

HTTPD的相关文章

Nginx为什么比Apache Httpd高效:原理篇

一.进程.线程? 进程是具有一定独立功能的,在计算机中已经运行的程序的实体.在早期系统中(如linux 2.4以前),进程是基本运作单位,在支持线程的系统中(如windows,linux2.6)中,线程才是基本的运作单位,而进程只是线程的容器.程序 本身只是指令.数据及其组织形式的描述,进程才是程序(那些指令和数据)的真正运行实例.若干进程有可能与同一个程序相关系,且每个进程皆可以同步(循 序)或异步(平行)的方式独立运行.现代计算机系统可在同一段时间内以进程的形式将多个程序加载到存储器中,并借

centos7,监控httpd运行状态

#!/bin/bash # 获取运行状态 http=$(systemctl status httpd | grep Active | awk '{print $2}') # 判断运行状态 if [ "$http" != "active" ];then # 运行状态为失败时尝试重启并发出重启成功信息,如果运行失败发出失败警告! systemctl restart httpd && echo "httpd Restart successfull

Mac OS X取消Apache(httpd)开机启动

关闭http开机启动 sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist 开机启动 sudo launchctl load -w /System/Library/LaunchDaemons/org.apache.httpd.plist

httpd搭建及知识点

http 的默认端口:80/tcphttps 的默认端口:443/tcp http协议的版本:    http/0.9    http/1.0    http/1.1    http/2.0 socket:BSD是 socket ipc的一种实现,允许在不同的主机上的进程之间相互通信的解决方式基于套接字有三中通信:    tcp套接字    udp套接字    裸套接字套件字的使用格式    ipv4    ipv6    unix sock 工作的模式: 一次完整http事务:请求 -- 响应

linux服务之http协议和httpd的配置(一)

http协议和httpd的配置 URL:Unifrom Resource Locator URL方案:scheme 服务器地址:ip:port 资源路径: http://www.magedu.com:80/bbs/index.php, https:// 基本语法: <scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<fra

linux服务之http协议和httpd的配置(二)

httpd-2.2的常见配置(2) 14.curl命令 curl是基于URL语法在命令行方式下工作的文件传输工具,它支持FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE及LDAP等协议.curl支持HTTPS认证,并且支持HTTP的POST.PUT等方法, FTP上传, kerberos认证,HTTP上传,代理服务器, cookies, 用户名/密码认证, 下载文件断点续传,上载文件断点续传, http代理服务器管道( proxy tunnel

linux服务之http协议和httpd的配置(三)

httpd的基本应用(3) httpd-2.4: 新特性: (1) MPM支持运行为DSO机制:以模块形式按需加载: (2) event MPM生产环境可用: (3) 异步读写机制: (4) 支持每模块及每目录的单独日志级别定义: (5) 每请求相关的专用配置: (6) 增强版的表达式分析式: (7) 毫秒级持久连接时长定义: (8) 基于FQDN的虚拟主机也不再需要NameVirutalHost指令: (9) 新指令,AllowOverrideList: (10) 支持用户自定义变量: (11

Centos7 httpd+openssl+ssh登录实现过程(爱你就给你写详细点)

上篇已经讲了LAMP的yum简易搭建 http://rexchow.blog.51cto.com/11619161/1885533 我们针对这套服务延伸openssl功能 原理就不多说了,谷X百X去 环境说明: server:CentOS7-192.168.230.202 client: win8.1-192.168.230.59 Apache/2.4.6 php Version 5.4.16 5.5.52-MariaDB 新增签发服务器:192.168.230.204 需要安装openssl

lvs DR模式 +keepalived 实现directory 高可用、httpd服务负载均衡集群

功能: lvs+keepalived高可用负载均衡集群中: ·keepalived负责后端real server健康状态检查 如果一台real server服务出现故障,则会从集群服务中剔除,等恢复之后再自动加入到集群. ·keepalived负责负载均衡器(directory server)高可用 A和B两台虚拟机装lvs+keepalived(主)和lvs+keepalived(备),但是对外表现为一个虚拟IP,主服务器会发送消息给备服务器,当备服务器收不到消息的时候,认为主出现故障,然后接

linux httpd安装

2. 解压缩# tar zxf httpd-2.2.4.tar.gz# cd httpd-2.2.4 3. 安装apache依赖包apr和apr-util,他们都在srclib目录中 3.1 安装apr# cd srclib/apr# ./configure --prefix=/usr/local/apr# make# make install 3.2 安装apr-util# cd ../apr-util# ./configure --prefix=/usr/local/apr-util --w