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 文件

相关推荐
AndyFrank2 分钟前
mac crontab 不能使用问题简记
linux·运维·macos
筱源源18 分钟前
Kafka-linux环境部署
linux·kafka
成都古河云1 小时前
智慧场馆:安全、节能与智能化管理的未来
大数据·运维·人工智能·安全·智慧城市
算法与编程之美1 小时前
文件的写入与读取
linux·运维·服务器
xianwu5431 小时前
反向代理模块
linux·开发语言·网络·git
Amelio_Ming1 小时前
Permissions 0755 for ‘/etc/ssh/ssh_host_rsa_key‘ are too open.问题解决
linux·运维·ssh
心灵彼岸-诗和远方1 小时前
Devops业务价值流:软件研发最佳实践
运维·产品经理·devops
JuiceFS2 小时前
好未来:多云环境下基于 JuiceFS 建设低运维模型仓库
运维·云原生
Ven%2 小时前
centos查看硬盘资源使用情况命令大全
linux·运维·centos
小钱c72 小时前
Mac下安装Apache JMeter并启动
jmeter·macos·apache