Apache 详细介绍一、概述Apache(全称 Apache HTTP Server)是一个开源的、跨平台的 Web 服务器软件,由 Apache 软件基金会开发和维护。自 1995 年发布以来

Apache 详细介绍

一、概述

Apache(全称 Apache HTTP Server)是一个开源的、跨平台的 Web 服务器软件,由 Apache 软件基金会开发和维护。自 1995 年发布以来,长期占据全球 Web 服务器市场份额第一(目前与 Nginx 竞争激烈)。

二、核心特性

  1. 模块化设计
    • 通过加载模块扩展功能(如 SSL、压缩、身份验证等)。
    • 支持动态模块加载(DSO)。
  2. 跨平台性
    • 可在 Windows、Linux、Unix、macOS 等系统运行。
  3. 配置灵活
    • 基于文本的配置文件(如 httpd.conf)。
    • 支持目录级配置(.htaccess 文件)。
  4. 功能丰富
    • 虚拟主机、URL 重写、负载均衡、代理服务等。
    • 支持多种编程语言(PHP、Python、Perl 等)。
  5. 安全性
    • 提供访问控制、身份验证、SSL/TLS 加密。
    • 定期发布安全更新。

三、架构与工作原理

  1. MPM(多处理模块)机制
    根据不同操作系统选择并发处理模型:
    • Prefork MPM:多进程模型,每个请求由独立子进程处理,稳定性高。
    • Worker MPM:多进程+多线程混合模型,资源占用较少。
    • Event MPM(推荐):基于事件驱动,高并发性能优异。
  2. 请求处理流程text复制下载客户端请求 → 监听端口 → MPM分配资源 → 模块链处理 → 返回响应

四、配置文件结构

主配置文件通常为 httpd.conf,包含:

apache

复制

下载

# 全局配置 ServerRoot "/etc/httpd" Listen 80 LoadModule php_module modules/mod_php.so # 虚拟主机配置 <VirtualHost *:80> ServerName www.example.com DocumentRoot "/var/www/html" <Directory "/var/www/html"> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory> </VirtualHost>

五、核心功能模块

模块名称功能说明
mod_rewriteURL 重写与重定向
mod_sslHTTPS 加密支持
mod_proxy反向代理与负载均衡
mod_cache内容缓存
mod_securityWeb 应用防火墙(需额外安装)

六、典型应用场景

  1. 静态网站托管
    直接提供 HTML、CSS、图片等静态资源。
  2. 动态应用支持
    通过模块集成语言解释器:
    • PHP:mod_php
    • Python:mod_wsgi
    • Java:mod_jk
  3. 反向代理服务器
    将请求转发到后端应用服务器(如 Tomcat、Node.js)。
  4. 负载均衡
    使用 mod_proxy_balancer 分配流量到多台后端服务器。

七、基础配置示例

apache

复制

下载

# 1. 更改监听端口 Listen 8080 # 2. 设置虚拟主机(基于域名) <VirtualHost *:80> DocumentRoot "/www/site1" ServerName site1.com </VirtualHost> <VirtualHost *:80> DocumentRoot "/www/site2" ServerName site2.com </VirtualHost> # 3. URL 重写示例(将短链接重定向) RewriteEngine On RewriteRule ^/short/(.*)$ /long-page.php?id=$1 [L] # 4. 密码保护目录 <Directory "/secure"> AuthType Basic AuthName "Restricted Area" AuthUserFile /etc/httpd/.htpasswd Require valid-user </Directory>

八、性能优化建议

  1. 选择合适 MPM
    Linux 下推荐使用 Event MPM
  2. 调整并发参数apache复制下载# Event MPM 配置示例 StartServers 3 MinSpareThreads 75 MaxSpareThreads 250 ThreadsPerChild 25 MaxRequestWorkers 400
  3. 启用压缩apache复制下载LoadModule deflate_module modules/mod_deflate.so DeflateCompressionLevel 6
  4. 缓存静态资源apache复制下载ExpiresActive On ExpiresByType image/jpg "access plus 1 month"

九、安全配置要点

  1. 隐藏版本信息apache复制下载ServerTokens Prod ServerSignature Off
  2. 限制目录访问apache复制下载<Directory /> Options None AllowOverride None Require all denied </Directory>
  3. 禁用不必要的模块
    如 mod_infomod_status 等。

十、常用命令

bash

复制

下载

# 启动/停止/重启 sudo systemctl start httpd sudo apachectl restart # 测试配置文件语法 apachectl -t # 查看已加载模块 httpd -M # 查看运行状态 systemctl status httpd

十一、与 Nginx 对比

方面ApacheNginx
并发模型进程/线程模型事件驱动模型
内存消耗相对较高较低
静态资源性能一般优秀
动态内容处理原生支持良好需通过 FastCGI 转发
.htaccess 支持支持不支持

十二、发展趋势

  • Apache 2.4+ 版本显著提升性能,支持 HTTP/2。
  • 云原生场景中常与 Nginx 组合使用(Nginx 前置处理静态请求)。
  • 持续集成微服务、容器化支持(如 httpd Docker 镜像)。

Apache 以其稳定性、模块化和广泛的社区支持,仍是企业级应用和传统 Web 服务的可靠选择。学习 Apache 有助于深入理解 Web 服务器原理及运维技术。

Read more

Lottie-Web 完整技术指南:让动画开发更简单高效

📚 目录 * 一、什么是 Lottie-Web * 二、为什么选择 Lottie-Web * 三、安装与引入 * 四、基础使用 * 五、API 详解 * 六、Vue 集成实战 * 七、高级特性 * 八、性能优化 * 九、常见问题与解决方案 * 十、最佳实践 * 十一、实际应用场景 * 十二、总结 一、什么是 Lottie-Web 1.1 Lottie 简介 Lottie 是 Airbnb 开源的一个动画库,它可以将 After Effects 动画导出为 JSON 格式,然后在 Web、iOS、Android

Java Web 开发:JSON 基础 + @Test 测试 + Cookie/Session/ 请求处理

Java Web 开发:JSON 基础 + @Test 测试 + Cookie/Session/ 请求处理

个人主页:♡喜欢做梦 欢迎  👍点赞  ➕关注  ❤️收藏  💬评论 目录 编辑 🍍JSON的概念  🍐概念  🍐@Test注解 🍑什么是@Test? 🍑与JSON关联 🍑@Test标记的方法与main方法的区别  🍍JSON语法  🍐核心数据类型  🍐常见使用 🍑对象 🍑数组  🍑JSON字符串和Java对象的互转 🍑传递JSON 🍑获取URL中的参数 🍑上传文件:@RequestPart  🍍Cookie和Seeion  🍐Cookie 🍑什么是Cookie? 🍑Cookie的获取  🍐Session 🍑什么是Session?  🍐Cookie和Session之间的关系 🍑Session的存储 🍑Session的获取 🍍获取header 🍍JSON的概念  🍐概念 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。他基于JavaScript的一个子集,但采用了独立语言的文

《C++ Web 自动化测试实战:常用函数全解析与场景化应用指南》

《C++ Web 自动化测试实战:常用函数全解析与场景化应用指南》

🔥草莓熊Lotso:个人主页 ❄️个人专栏: 《C++知识分享》《Linux 入门到实践:零基础也能懂》 ✨生活是默默的坚持,毅力是永久的享受! 🎬 博主简介: 文章目录 * 前言: * 一. 元素定位:自动化测试的 “精准导航” * 1.1 cssSelector:简洁高效的选择器 * 1.2 xpath:灵活强大的路径语言 * 二. 测试对象操作:定位后的 “核心动作” * 2.1 点击与提交:触发页面交互 * 2.2 文本输入与清除:模拟用户输入 * 2.3 文本与属性获取:验证测试结果 * 三. 窗口与弹窗控制:解决 “多窗口与弹窗干扰” * 3.1 窗口控制:句柄是关键 * 3.

C++ 方向 Web 自动化测试入门指南:从概念到 Selenium 实战

C++ 方向 Web 自动化测试入门指南:从概念到 Selenium 实战

🔥草莓熊Lotso:个人主页 ❄️个人专栏: 《C++知识分享》《Linux 入门到实践:零基础也能懂》 ✨生活是默默的坚持,毅力是永久的享受! 🎬 博主简介: 文章目录 * 前言: * 一. 自动化测试基础:先搞懂"为什么"和"做什么" * 1.1 自动化测试的核心目标:回归测试 * 1.2 自动化测试分类:别把 “不同自动化” 混为一谈 * 1.3 自动化测试金字塔:如何分配测试资源? * 二. Web 自动化测试核心:环境搭建与驱动管理 * 2.1 核心组件原理:三者如何协同工作? * 2.2 环境搭建:3 步搞定依赖安装