Apache服务

2023-11-12

Apache服务

(apache与nginx服务的区别)

什么是服务?

服务是具备处理客户端请求能力的程序,网站服务就是可以处理http请求并回复响应报文及数据

apache相关文件

主配置文件:/etc/httpd/conf/httpd.conf

子配置目录:/etc/httpd/conf.d/

模块配置目录:/etc/httpd/conf.modules.d/

日志目录:/var/log/httpd/

站点根目录:/var/www/html/

模块路径:/usr/lib64/httpd/modules

默认首页:index.html

httpd命令:

-t:测试配置⽂件的语法是否正确。

-v:显示版本信息。

V:显示版本信息以及建⽴环境。

-l:显示服务器编译时所包含的模块。

-M:显示动态功能模块

持久连接

测试:

[root@server ~]# yum install telnet -y
[root@server ~]# echo 'this is test!' > /var/www/html/index.html
[root@server ~]# telnet 127.0.0.1 80
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
GET / HTTP/1.1
Host:127.0.0.1
HTTP/1.1 200 OK
Date: Wed, 14 Jul 2021 14:17:29 GMT
Server: Apache/2.4.6 (CentOS)
Last-Modified: Wed, 14 Jul 2021 14:16:40 GMT
ETag: "e-5c71600ca9dad"
Accept-Ranges: bytes
Content-Length: 14
Content-Type: text/html; charset=UTF-8
this is test!
Connection closed by foreign host.

每个资源获取完成后不会断开连接,而是继续等待其它的请求完成

[root@server ~]# cat /etc/httpd/conf.d/keeplive.conf
KeepAlive默认是on,默认的超时时间是5秒。
KeepAliveTimeout # 连接超时
MaxKeepAliveRequests # 最大保持连接请求

多路处理模块

MPM工作模式

默认选择处理模块为prefork

prefork:多进程I/O模型,一个主进程,管理多个子进程,一个子进程处理一个请求。

worker:复用的多进程I/O模型,多进程多线程,一个主进程,管理多个子进程,一个子进程管理 多个线程,每个 线程处理一个请求。

event:事件驱动模型,一个主进程,管理多个子进程,一个进程处理多个请求。

[root@server ~]# cat /etc/httpd/conf.modules.d/00-mpm.conf 

修改prefork参数

默认参数:
StartServers 5 # 服务启动时的进程数
MaxSpareServers 10 # 最大空闲服务进程数
MinSpareServers 5 # 最小空闲进程数
MaxRequestWorkers 256 # 单个进程最多接受的进程数
[root@server ~]# vim /etc/httpd/conf.d/mpm.conf
StartServers 10
MaxSpareServers 15
MinSpareServers 10
MaxRequestWorkers 256
MaxRequestsPerChild 4000
[root@localhost ~]# systemctl restart httpd
[root@server ~]# ps -ef | grep httpd

压测工具 ab

[root@localhost ~]# ab -n 1000000 -c 1000 http://127.0.0.1/
# -n 即requests,用于指定压力测试总共的执行次数
# -c 即concurrency,用于指定的并发数

测试过程中,可以看到最大进程数

[root@localhost ~]# ps aux |grep httpd |wc -l
258

结束ab的压力测试,等待一段时间,可以看到进程数慢慢减少

[root@localhost ~]# ps aux |grep httpd |wc -l
12

worker模式

work使用了多进程和多线程的混合模式,worker模式也同样会先派生一下子进程,然后每个子进程创建 一些线程,同时包括一个监听线程,每个请求过来会被分配到一个线程来服务。

优点:线程比进程会更轻量,因为线程是通过共享父进程的内存空间,因此,内存的占用会减少一些, 在高并发高流量的场景下会比prefork有更多可用的线程,表现会更优秀一些。

缺点:如果一个线程出现了问题也会导致同一进程下的线程出现问题,如果是多个线程出现问题,也只 是影响apache的一部分,而不是全部。由于用到多进程多线程,需要考虑到线程的安全。

event模式

这个是apache中最新的模式,在现在的版本里已经是稳定可用的模式,它和worker模式很像,最大的 区别在于,它解决了keep-alive场景下,长期被占用的线程的资源浪费问题(某些线程因为被keepalive,挂载哪里等待,中间基于没有请求过来,一直等到超时)

event中会有一个专门的线程来管理这些keep-alive类型的线程,当有真实请求过来的时候,将请求传 递给服务线程,执行完毕后,又允许它释放。这样,一个线程就能处理几个请求了,实现了异步非阻 塞。

访问控制机制

更改站点根目录

重新定义根目录

[root@server1 conf]# vim httpd.conf
......
DocumentRoot "/data/www/html"
......
# 准备页面
[root@server1 ~]# echo "this path /data/wwww/html" >
/data/www/html/index.html

访问控制机制中开放相应目录权限

[root@server1 conf]# vim httpd.conf
<Directory "/data/www/html">
Require all granted
</Directory>
[root@server1 ~]# systemctl restart httpd

Require常见配置参数:

Require all granted # 全部放行

Require all denied # 全部拒绝

Require ip IPAd # 放行某ip地址

Require not ip IP # 拒绝某ip地址

黑名单

<RequireAll>
Require all granted
Require not ip 172.16.1.1 #拒绝特定IP
</RequireAll>

白名单

<RequireAny>
Require all denied
require ip 172.16.1.1 #允许特定IP
</RequireAny>

只允许特定网段访问

<requireany>
require all denied
Require ip 192.168.39.0/24
</requireany>

URI匹配规则

#基于目录
<Directory “/path">
...
</Directory>
#基于文件
<File “/path/file”>
...
</File>
#基于文件通配符
<File “/path/*file*”>
...
</File>
#基于正则表达式
<FileMatch “regex”>
...
</FileMatch>

URL匹配规则

#/private1, /private1/,/private1/file.txt 匹配
#/private1other 不匹配
<Location "/private1">
# ... #注意斜线
</Location>
#/private2/,/private2/file.txt 匹配
#/private2,/private2other 不匹配
<Location "/private2/">
# ...
</Location>

OPTIONS指令

常见选项(默认是全部禁用):

Indexes:指明的URL路径下不存在与定义的主页面资源相符的资源文件时,返回索引列表给 用户

FollowSymLinks:允许访问符号链接文件所指向的源文件

None:全部禁用

All: 全部允许

在主配置文件中禁止 Indexes 和 FollowSymLinks ,但是在 .htaccess 中打开

[root@localhost ~]# vim /etc/httpd/conf/httpd.conf
<Directory "/data/html">
Options -Indexes -FollowSymLinks
AllowOverride options=FollowSymLinks,Indexes
[root@localhost ~]# systemctl reload httpd

创建 .htaccess 文件,然后发现主配置文件中的设置被修改了

[root@localhost ~]# echo "Options FollowSymLinks Indexes" >
/data/html/dir/.htaccess
[root@localhost ~]# systemctl reload httpd

因为有主配置文件中设置了 .htaccess 对应的文件拒绝全部访问,所以相对是安全的

[root@localhost ~]# vim /etc/httpd/conf/httpd.conf
<Files ".ht*">
Require all denied
</Files>

日志

目录·:/var/log/httpd/

虚拟主机

基于ip地址设置虚拟主机

[root@node3 data]# cat /etc/httpd/conf.d/site.conf
<Directory "/data/">
Require all granted
</Directory>
<VirtualHost 192.168.0.140:80>
Servername www.site1.com
DocumentRoot "/data/site1/"
</VirtualHost>
<VirtualHost 192.168.0.145:80>
Servername www.site2.com
DocumentRoot "/data/site2/"
</VirtualHost>
[root@node1 ~]# curl 192.168.0.142
<h1>This is site1</h1>
[root@node1 ~]# curl 192.168.0.145
<h1>This is site2</h1>

基于端口虚拟主机

[root@server1 ~]# cat /etc/httpd/conf.d/site.conf
Listen 8080
Listen 9090
<Directory "/data/">
Require all granted
</Directory>
<VirtualHost *:8080>
DocumentRoot "/data/site3/"
</VirtualHost>
<VirtualHost *:9090>
DocumentRoot "/data/site4/"
</VirtualHost>

HTTPS

https=http + ssl 443端口

  • SSL是基于IP地址实现,单IP的httpd主机,仅可以使用一个https虚拟主机

  • 实现多个虚拟主机站点,apache不能支持,nginx支持

  • SSL实现过程

    • 客户端发送可供选择的加密方式,并向服务器请求证书
    • 服务器端发送证书以及选定的加密方式给客户端
    • 客户端取得证书并进行证书验证,如果信任给其发证书的CA
    • 客户端生成临时会话密钥(对称密钥),并使用服务器端的公钥加密此数据发送给服务器,完成密 钥交换
    • 服务用此密钥加密用户请求的资源,响应给客户端
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Apache服务 的相关文章

随机推荐

  • 使用虚拟机遇到的一次问题——虚拟机ping不通网关

    问题 主机可以ping到虚拟机 外网 虚拟机可以ping到圆环地址 可以ping到同网段下其他虚拟机 虚拟机ping不到网关 ping不到外网 检查了网络编辑器的设置 没有问题 主机ipconfig发现问题 默认网关没了 进入属性编辑器添加
  • JS事件高级

    1 注册事件 绑定事件 1 1 注册事件概述 给元素添加事件 称为注册事件或者绑定事件 注册事件有两种方式 传统方式和方法监听注册方式 传统注册事件 利用on开头的事件onclick
  • JAVA接收JSON中的数组

    入参数据示例 respCode 0000 respMsg 请求成功 bizSeqNo 22022120001184432418054888526616 transTime 20220221180548 success true tokenA
  • 思科视频会议系统+服务器,Cisco思科MCU5310视频会议系统服务器

    业界 的高清MCU Cisco 5300系列MCU Cisco 5300系列系列MCU 为目前业界 的一款全高清MCU产品 具备高度稳定性 可管理性 同时具有灵活的容量端口数 能充分满足用户需求 一 的稳定性 灵活的端口容量 Cisco53
  • 华为OD机试 Python 矩阵稀疏扫描

    描述 题目描述 一个矩阵 如果其中大部分元素都是0 我们就称它为 稀疏矩阵 稀疏矩阵在实际应用中很常见 处理这种矩阵可以大大提高计算效率 现在 你得到了一个矩阵 要求你检查哪些行和列是 稀疏 的 稀疏 的定义是 当一个行或列中的0的数量超过
  • jQuery的ajaxform()

    https blog csdn net qq 38602656 article details 78668924 https blog csdn net weixin 41355260 article details 79851651
  • Linux系统中修改Oracle数据库字符编码集

    具体操作步骤如下 su oracle sqlplus nolog connect as sysdba 查看数据库字符编码集 select userenv language from dual shutdown immediate start
  • mysql中00933错误_java.sql.SQLException: ORA-00933: SQL 命令未正确结束错误解决

    在程序运行时 程序报sql错误 nested exception is java sql SQLException ORA 00933 SQL 命令未正确结束 具体错误如下所示 调用函数异常 org springframework jdbc
  • 性价比较高的笔记本电脑推荐

    推荐一 联想小新Air14锐龙版 优点 6核处理器 Zen2架构 性能释放高达26w 高色域屏幕 支持DC调光 硬盘扩展性好 双M 2插槽 有USB C接口 支持PD充电 缺点 单USB C接口 充电时占用接口 推荐二 惠普 ZBook S
  • antDv 级联选择器(a-cascader)通过接口动态加载数据

    每次子选择器的内容都是通过将父级id传给接口获取到 最终保存到data中参数selectItem格式为 xxx xx x
  • 计算机网络与服务器

    目录 架构体系及相关知识 三层架构 四层架构 常见的应用的模式 OSI模型 分层 数据链路层 TCP IP模型 TCP和UDP都是传输层的协议 TCP三次握手 四次次分手 URL HTTP协议详解 网址URL 结构化 报文行 报文头 空行
  • (G)ZS-CMR数据划分

    G ZS CMR 即 广义 零样本跨模态检索 设置类比 广义 零样本学习 G ZSL 这里记录两种划分 不限 CMR 也可以是 image retrieval ZS CMR 参考 1 类比 ZSL 整个数据集先从 class 角度分 see
  • 【java基础】java关键字总结及详解

    Java关键字是电脑语言里事先定义的 有特别意义的标识符 有时又叫保留字 还有特别意义的变量 Java的关键字对Java的编译器有特殊的意义 他们用来表示一种数据类型 或者表示程序的结构等 关键字不能用作变量名 方法名 类名 包名和参数 一
  • “应用程序配置不正确,应用程序未能启动” 错误的解决

    转载自 http hi baidu com xunxun129 blog item 6b311ccf24f4900992457e87 html 一 问题描述 今天在虚拟机上装了XP系统 但运行一个win32 Console程序时弹出对话框
  • 【第八章 IDEA中常用快捷键】

    第八章 IDEA中常用快捷键 1 Ctrl Y 删除光标所在行的所有内容 Ctrl X也可以 2 Ctrl D 快速向下复制当前行的内容 3 Ctrl W 递进式选中代码 可以先选中光标所在的一部分代码 连续按这个快捷键会在原来的基础上继续
  • 3dsmax子菜单无法选择_超全!!3ds Max重要的快捷键指令都在这里!画图速度提高一倍...

    室内设计胶囊 每个人都在努力的学习 感觉自己有一段时间没有练习了 只是偶尔工作的时候用用 大家都在努力 那我也出一点点力量吧 有同学说3ds Max 里面的快捷键实在太多了 全部记住有些吃力 能不能整理一份重要的 常用的快捷键 这样在记忆的
  • 史上最全 Vue 前端代码风格指南

    这篇文章是在公众号JS每日一题里抄过来的 觉得有用 收藏在这里 一 命名规范 市面上常用的命名规范 camelCase 小驼峰式命名法 首字母小写 PascalCase 大驼峰式命名法 首字母大写 kebab case 短横线连接式 Sna
  • Vue3 详细教程

    文章目录 一 API 风格 1 1 选项式 API 1 2 组合式 API 二 Vue 指令 2 1 文本插值 2 2 v html 标签元素 2 3 v on 绑定事件 2 4 v show 隐藏元素 2 5 v if 消除元素 2 6
  • Error:JAVA_HOME is not set and could not be found

    解决办法 打开hadoop etc hadoop目录下的文件hadoop env sh 将语句 export JAVA HOME JAVA HOME 修改为 export JAVA HOME 你的java路径 比如我是将其修改为 expor
  • Apache服务

    Apache服务 apache与nginx服务的区别 什么是服务 服务是具备处理客户端请求能力的程序 网站服务就是可以处理http请求并回复响应报文及数据 apache相关文件 主配置文件 etc httpd conf httpd conf