httpd服务

httpd服务

在这里插入图片描述

Httpd服务

httpd是一个开源软件,且一般用作web服务器来使用。目前最流行的web服务器软件叫做httpd,
在早期的http server就叫做apache,到了http server 2.0以后就改名为httpd了。
所以有时候听到apache服务器和httpd服务器其实都是指得是一个意思。

####httpd生产的文件
httpd目前有多个版本,主流有两个版本分别为:2.2、2.4,在安装了httpd软件之后,会生成配置文件。
这些文件有:
其中主配置文件:/etc/httpd/conf/httpd.conf
分段配置文件:/etc/httpd/conf.d/.conf(一般自己定义配置在此文件下重新建立)
模块的目录:/etc/httpd/modules
日志目录:/etc/log/httpd/

访问日志为:./access_log
错误日志为:./err_log
网页的存放目录:/var/www/html
####httpd的特性:
高度模块化: core + modules
DSO:dynamic shared object
MPM:Multipath processing Modules (多路处理模块)
prefork:多进程模型,每个进程响应一个请求、一个主进程:负责生成子进程及回收子进程;负责创建套接字;
负责接收请求,并将其派发给某子进程进行处理,每个子进程处理一个请求。
worker:多进程多线程模型,每线程处理一个用户请求、一个主进程:负责生成子进程、负责创建套接字、
负责接收请求、并将其派发给某子进程进行处理,每个子进程负责生成多个线程,每个线程负责响应用户请求;
并发响应数量为:子进程数量*子进程创建的最大线程数量。
event:事件驱动模型,多进程模型,每个进程响应多个请求、一个主进程 :负责生成子进程、负责创建套接字、
负责接收请求,并将其派发给某子进程进行处理,子进程基于事件驱动机制直接响应多个请求。

注:在/etc/httpd/conf.modules.d/00-mpm.conf切换工作模型

####httpd的功能特性:
CGI:Common Gateway Interface
虚拟主机:IP,PORT, FQDN
反向代理
负载均衡
路径别名
丰富的用户认证机制
basic
digest
支持第三方模块
####服务控制:
systemctl enable|disable httpd.service #开机启动与否
systemctl {start|stop|restart|status} httpd.service #单次操作状态
#####1、 监听地址端口
在主配置文件中/etc/httpd/conf/httpd.conf:
Listen IP:PORT,表示监听在该IP的PORT端口上,如果不写IP,表示监听本机所有可用IP地址,
另外,Listen指令可以出现多次,表示监听不同IP及不同端口上,修改完成后需要重启生效
注意:在修改完配置文件后需要使用:httpd –t 检查语法,语法没有问题才可继续其它操作
#####2、 持久连接
Persistent Connection:tcp连续建立后,每个资源获取完成后不全断开连接,而是继续等待其它资源请求的进行。
副作用:对并发访问量较大的服务器,长连接机制会使得后续某些请求无法得到正常响应。
解决方案:使用较短的持久连接时长,以及较少的请求数量;
KeepAlive On|Off 此功能开启|关闭
KeepAliveTimeout 15 时间限制15秒
MaxKeepAliveRequests 100 请求数量100

以上表示:当一个连接建立,时间超过15秒或请求数量超过100个时,服务器会主动断开。

#####3、 MPM
文章开头已介绍,下面是配置选项与参数,
prefork的配置
这里写图片描述
worker的配置:
这里写图片描述
修改模型选项:/etc/httpd/conf.modules.d/00-mpm.conf
#####4、 DSO
配置指令模块加载,格式如下:
LoadModule <module_name> <module_path>
模块路径可以是相对路径,相对ServerRoot指令指向的位置
配置文件:/etc/httpd/conf.modules.d/00-proxy.conf
#####5、 定义Main server 文档页面路径
使用DocumentRoot指令,关联文档路径的映射
DocumentRoot指向路径问URL起始位置
如DocumetRoot “/var/www/html”
在本地有一个文件file在/var/www/html/filedir/file则URL访问路径为www.smartwy.com/filedir/file
#####6、 站点路径访问控制
可基于两种机制指明对哪些资源进行何种访问控制:
文件系统路径

1,<Directory  "/dir/">
		...
  </Directory>
2,<File  "/dir/to/file">
		...
  </File>
3, <FileMatch  "PATTERN">
		...
  </FileMatch>

下面以路径访问控制做简单介绍
<Directory "/var/www/cgi-bin">
		AllowOverride None 
		Options None
		Require all granted
</Directory> 

AllowOverride:与访问控制相关的哪些执行可以放在.htacesss文件中,每个目录下都可以有一个 ,
但是使用.htacess会使得网站对目录下的资源解析变的非常慢,不推荐使用。ALL所有都可以放进去,None什么都不可以放。
Options:Indexs:指明的URL路径不存在与定义的主页面资源相符的资源文件时候,返回索引列表给用户,
目录浏览功能,一般关掉。
FollowSymLinks:允许跟踪符号链接文件所指向的源文件,跟踪符号链接,如果目录下存在软连接,则可以直接
访问软连接指向的文件
None:全部停用
All:全部启用

Httpd2.4使用:Require:对控制页面访问控制,
			Require all granted 全部允许访问
			Require ip *.*.*.* 指定ip允许访问
			Require host host_name 指定主机名允许方法
Httpd2.2使用:Order allow,deny 检查次序
	     	Deny(黑名单) from 172.16.12.1  不允许172.16.12.1地址访问
			Allow(白名单) from 172.16  仅允许172.16网段的地址访问
 	
 	注意:指定访问控制时较小集合域放在前面

#####7、 定义站点主页面
DirectoryIndex index.html index.html.var
从左到右匹配到的文件,将作为默认主页返回
#####8、 日志
访问日志:access_log | -date
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:Remote user (from auth; may be bogus if return status (%s) is 401);非为登录访问时,其为一个减号;
%t:服务器收到请求时的时间;
%r:First line of request,即表示请求报文的首行;记录了此次请求的“方法”,“URL”以及协议版本;
%>s:响应状态码;
%b:响应报文的大小,单位是字节;不包括响应报文的http首部;
%{Referer}i:请求报文中首部“referer”的值;即从哪个页面中的超链接跳转至当前页面的;
%{User-Agent}i:请求报文中首部“User-Agent”的值;即发出请求的应用程序。
错误日志:error_log | -date
错误级别:debug, info, notice, warn, error, crit, alert, emerg,
#####9、 基于用户访问控制
认证质询:
WWW-Authenticate:响应码为401,拒绝客户端请求,并说明要求客户端提供账号和密码;
认证:
Authorization:客户端用户填入账号和密码后再次发送请求报文;认证通过时,则服务器发送响应的资源;
认证方式有两种:
basic:明文
digest:消息摘要认证
用户的账号和密码存放于何处?
虚拟账号:仅用于访问某服务时用到的认证标识
存储:
文本文件;
SQL数据库;
ldap目录存储;
格式如下:
这里写图片描述
编写完成后,systemctl restart httpd.service重启httpd服务,
在浏览器地址栏内输入相应域名,会出现以下界面,填入上方指定的用户与密码便可继续访问。
这里写图片描述
下面是帐号与密码的创建与管理:
Htpasswd:专用命令完成此类文件的创建及用户管理
htpasswd [options] /PATH/TO/HTTPD_PASSWD_FILE username
-c:首次创建密码文件时使用,如再次使用会覆盖以前的密码文件
-m:md5格式加密
-s: sha格式加密
-D:删除指定用户
-b:批模式添加用户
htpasswd -b [options] /HTTPD_PASSWD_FILE username password
这里写图片描述
自定义密码文件路径,配置文件内路径要与实际文件路径相同,
使用组帐号进行认证
这里写图片描述
组文件编写:group: user1 user2 …(一行定义一个组)
组成员访问时与普通访问相同,密码创建也相同。
注意:修改配置文件后,检查语法httpd –t ,没有问题,重启httpd服务,配置才可生效。
#####10、 虚拟主机
一个物理主机可以服务与多个站点,每个站点可以通过一个或多个虚拟主机来实现。
有三种实现方案:
基于ip:为每个虚拟主机准备至少一个ip地址;
基于port:为每个虚拟主机使用至少一个独立的port;
基于FQDN:为每个虚拟主机使用至少一个FQDN;

基于ip和基于port只做介绍说明,基于FQDN做实验说明:
基于IP的虚拟主机示例(在/etc/httpd/conf.d/下新建**.conf文件):
<VirtualHost 172.16.100.6:80> #端口相同,ip不同(确定主机有两个ip)
	ServerName www.a.com #虚拟服务器域名(基于IP与port实验没有影响)
	DocumentRoot "/www/dir" #指定站点根目录,实验时在根目录下新建index.html文件,
	写一点测试信息在里面,方便查看实验效果。
</VirtualHost>
<VirtualHost 172.16.100.7:80>
	ServerName www.b.net
	DocumentRoot "/www/dir"
</VirtualHost>
可在浏览器地址栏中输入IP查看。

基于端口的虚拟主机(在/etc/httpd/conf.d/下新建**.conf文件):
<VirtualHost 172.16.100.6:80> #IP相同,端口不同
	ServerName www.a.com
	DocumentRoot "/www/dir"
</VirtualHost>
Listen 808 #开启监听808端口
<VirtualHost 172.16.100.6:808>
	ServerName www.b.net
	DocumentRoot "/www/dir"
</VirtualHost>
可在浏览器地址栏中输入IP:PORT查看。

基于FQDN的虚拟主机(在/etc/httpd/conf.d/下新建**.conf文件):
<VirtualHost 172.16.100.6:80>
	ServerName www.a.com
	DocumentRoot "/www/dir"
</VirtualHost>
<VirtualHost 172.16.100.6:80>
	ServerName www.b.net
	DocumentRoot "/www/dir"
</VirtualHost>
可在浏览器地址栏中输入域名查看。
基于FQDN的虚拟主机实验:
1.1在/etc/httpd/conf.d目录下新建两个配置文件:

这里写图片描述
这里写图片描述
注意:如果是httpd-2.2,则使用基于FQDN的虚拟主机时,需要事先使用如下指令:
NameVirtualHost IP:PORT

在设置的站点根目录下新建index.html文件,
这里写图片描述
编写完成后,httpd –t 检查语法,重启httpd服务。
1.2DNS正向解析:
将www.smartwy.com与www.magedu.com解析到172.16.253.190
/etc/named.rfc1912.conf添加以下内容
这里写图片描述
新建区域解析库/var/named/smartwy.com.zone编辑如下:
这里写图片描述
新建区域解析库/var/named/magedu.com.zone编辑如下:
这里写图片描述
以上配置要确保172.16.252.205处于被监听状态,与172.16.253.190联通,
执行named-checkconf,
named-checkzone “smartwy.com” 区域解析库名,
named-checkzone “magedu.com” 区域解析库名,
rndc reload 重新加载。
1.3 测试(使用的域名有可能在公网已被使用,可把DNS设为172.16.252.205防止公网影响)
这里写图片描述
#####11、 内置的server-status页面
在虚拟主机内添加/server-status选项
这里写图片描述
使用的是2.2版本,设置如下

<Location /server-status>
 	SetHandler server-status
		Order allow,deny
		Allow from 172.16
</Location>

Httpd –t 检查语法,重启服务,
在浏览器地址栏输入www.smartwy.com/server-status

这里写图片描述

  • 5
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值