Apache配置与应用

目录

保持连接

参数

说明

访问控制

只允许指定ip访问

拒绝指定主机其他正常访问

用户授权

日志格式

参数

说明

日志分割

操作步骤

参数

说明

使用第三方工具cronolog分割日志


保持连接

Apache通过设置配置文件httpd-default.conf中相关的连接保持参数来开启与控制连接保持功能。

使用 vim /usr/local/httpd/conf/extra/httpd-default.conf 命令打开apache的默认配置文件

注意在httpd的主配置文件中将httpd-default.conf的include前的注释符去掉,让主配置文件包含该配置文件

|----------------------|-----------------------------------------------------------------------------|
| #### 参数 | #### 说明 |
| KeepAlive | 保持连接功能,OFF表示关闭,ON表示打开,可以根据网站的并发请求量决定是否打开,即在高并发时打开连接保持功能,并发量不高时关闭此功能。 |
| MaxKeepAliveRequests | 用于设置在一次长连接中可以传输的最大请求数量,超过此最大请求数量就会断开连接,最大值的设置决定于网站中网页的内容,一般设置数量会多于网站中所有的元素。 |
| KeepAliveTimeout | 表示一次连接多次请求之间的最大间隔时间,即两次请求之间超过该时间连接就会自动断开,从而避免客户端占用连接资源。 |

开启httpd服务后,在访问http服务时,在网页中按下F12,打开开发人员工具,在选中网络窗口使用Ctr+R刷新网页

选中主机 ip,可以看到标头下的响应标头的信息,显示Keep-Alive已经开启,相关参数是timeout=5,max=97

现在来到默认配置文件( /usr/ocal/htpd/conf/lextra/httpd-default.conf )中修改超时时间和最大

连接数

保存并退出,使用systemctlrestart httpd 重启服务

此时来到浏览器刷新,可以看到最大连接数为90


访问控制

使用 vim /usr/local/httpd/conf/httpd.conf 命令进入httpd主配置文件

在末行模式下搜索Directory(:/Directory)可以找到<Directory/>单元,这个单元就规定了允许或拒绝用户访问哪些目录(访问权限)

图中的Require all denied规定了用户全都不能访问系统的根目录

往下翻一点,可以看到另一个Directory单元,这个单元中就规定了用户可以访问 /usr/local/httpd/htdocs 目录

只允许指定ip访问

修改后需要重启服务

然后打开一台带有图形化界面的虚拟机,比如win10或win11,或者使用第二台Linux主机,通过curl命令也可以

将其ip修改为192.168.10.102,访问Web服务器(192.168.10.101),可以看到访问是通过的

拒绝指定主机其他正常访问

此时除了刚刚开启的102主机其他的都可以正常访问Web服务器

用户授权

验证授权的方式变成账号密码,需要用到Apache自带的htpasswd工具生成

使用htpasswd命令生成文件,第一次创建需要加-c选项,后续就不需要加-c了

通过cat命令可以查看到生存的用户和密钥

再修改配置文件( /usr/local/httpd/conf/httpd.conf )

Basic:指定了认证的类型为 Basic,即基本认证方式。BasicAuthentication 是一种简单的认证方式,客户端 (通常是浏览器) 会将用户名和密码以明文形式通过 HTTP 的 Authorization头部发送给服务器。

最后在访问Web服务器时,就会被要求输入账号和密码


日志格式

打开Apache的主配置文件 ( /usr/local/httpd/conf/httpd.conf ) ,在末行模式下搜索Log (:/Log) 可以看到httpd提供的两种日志格式,第一种是combined (组合格式) ,第二种是common (通用格式)

保存并退出,重启httpd服务,再次访问Web服务器。然后cat查

看 /usr/local/httpd/logs/access_log 文件

可以看到最后一行的组合日志格式生成的日志

|----------------------|--------------------------------------------------------------------------|
| #### 参数 | #### 说明 |
| &h | 客户端的IP地址或主机名 |
| %l | 客户端的标识符,如果启用了标识符(如通过 IdentLookups 配置),否则为- |
| %u | 请求时客户端提供的用户名(如果有),否则为- |
| %t | 请求的时间戳 |
| \"%r\" | 客户端请求的第一行,包括 HTTP 方法、请求路径和协议 |
| %>s | 服务器返回给客户端的HTTP状态码 |
| %b | 传输给客户端的字节数,不包括HTTP头部的大小 |
| \"%{Referer}i\" | 请求报文中首部"referer"的值;即从哪个页面中的超链接跳转至当前页面的,防止盗链,i就是首部的意思,Referer是链接到此URL的页面。 |
| \"%{User-Agent}i\" | 此项是客户端提供的浏览器识别信息,i是首部的意思,即请求头 |
| &I | 服务器接收得字节数,需要启用mod_logio模块。 |
| %O | 服务器发送得字节数,需要启用mod_logio模块。 |


日志分割

日志分割需要使用Apache自带的日志分割工具rotatelogs

操作步骤

依日打开httpd主配置文件

将刚才修改日志格式的行注释掉,使用CustomLog指定日志记录的方式

|-------------------------------------|-----------------------------------------------|
| #### 参数 | #### 说明 |
| /usr/local/bin/rotatelogs | 是一个日志分割工具的路径 |
| -l /var/log/httpd/access_%Y%m%d.log | 指定了日志文件的格式和存储位置 |
| %Y%m%d | 表示将日期格式化为年 (四位数)、月、日,例如 access_20240710.log |
| 86400 | 日志文件的滚动时间间隔,单位是秒。这里代表一天的秒数,即每隔一天就会生成一个新的日志文件。 |

保存并退出,重启服务。手动在指定的var/log下创建httpd目录

再通过浏览器访问Web服务器,然后去 /var/log/httpd/ 下查看 access_20240710.log 文件

使用第三方工具cronolog分割日志

将源代码软件包拖入XShell,使用tarzxvf命令解压,进入解压目录

使用 ./configure , make && make instll 安装

进入/usr/local/sbin/目录下可以看到自动将命令安装进sbin目录下了

进入httpd主配置文件,修改日志记录方式

保存并退出,重启服务。

再通过浏览器访问Web服务器,然后去 /var/loghttpd/ 下查看 my_access 20240710.log 文件

相关推荐
云边有个稻草人2 分钟前
【Linux系统】第八节—进程概念(上)—冯诺依曼体系结构+操作系统+进程及进程状态+僵尸进程—详解!
linux·进程·冯诺依曼体系结构·pcb·僵尸进程·进程的状态·task_ struct
xian0gang12 分钟前
rk3588 区分两个相同的usb相机
linux
这儿有一堆花22 分钟前
安全访问家中 Linux 服务器的远程方案 —— 专为单用户场景设计
linux·服务器·安全
RussellFans1 小时前
Linux 文本三剑客(grep, awk, sed)
linux·运维·服务器
猴哥聊项目管理1 小时前
什么是DevOps智能平台的核心功能?
运维·项目管理·制造·devops·软件·项目管理软件·软件分享
Chuncheng's blog1 小时前
CentOS 7如何编译安装升级gcc至7.5版本?
linux·运维·c++·centos
听风吹等浪起1 小时前
CentOS在vmware局域网内搭建DHCP服务器【踩坑记录】
linux·服务器·centos
明月看潮生1 小时前
青少年编程与数学 01-011 系统软件简介 04 Linux操作系统
linux·青少年编程·操作系统·系统软件·编程与数学
aitav02 小时前
⚡️ Linux Docker 基本命令参数详解
linux·运维·docker
Nazi62 小时前
docker数据管理
运维·docker·容器