Apache HTTP连接处理流程
总结帖:
首先更新虚拟主机信息,利用process_connection挂钩函数处理。
1. 请求读取 ap_read_request
报文解析,HTTP_PROTOCOL
HTTP请求头:"GET index.html HTTP/1.1"
HTTP请求域:"Accept:*/*"
HTTP请求体:数据
请求信息保存在request_rec中,在请求处理过程中一直存在。
读取报文的处理也在这个地方做,输入处理过滤器。比如说文件分隔符(Windows "/", Unix "\")。
2. 请求处理 ap_process_request
(1):请求解析
①URL字符转义
浏览器会对地址栏输入的特殊字符进行转化,例如空格转换成%20,因此服务器需要将字符转换回去。处理函数是:ap_unescape_url()。
②从URL中剔除/../和/./字符
确保路径成为绝对路径。处理函数是ap_getparents()。
③首次读取URL相关配置信息
从配置系统中查找与该URL相关联的配置信息,为后续的用户权限验证,权限控制做准备。处理函数是ap_location_walk()。
④URL名称转换 translate_name
指令Alias:将URL映射到另外一个特定的URL。mod_writer -- URL重写。
⑤map to storage
确定指定的资源在磁盘上是否存在。
⑥二次读取URL相关配置信息
URL名称转换和映射后,读取改新URL的相关联的配置信息。
⑦head parser
检查HTTP请求头。
(2):安全处理
①access_checker
对客户的访问做基础性的检查限制工作。比如根据IP地址,访问时间。模块是mod_access。
②check_user_id
检查用户的身份权限(用户名和密码)。
③auth_checker
检查用户是否具有访问该资源的权限。
(3):请求准备
①type_checker
确认客户请求的资源类型。mod_mime。
②fixups
补丁修复。可选处理过程。在内容生成以前的最后一步处理操作。
分享到:
相关推荐
这个连接器,通常称为 mod_jk 或 ajp (Apache Jserv Protocol),允许两个服务协同工作,使得 Apache 能够处理静态内容,而 Tomcat 处理动态 Java 应用程序,实现高效、灵活的Web服务器架构。 Apache HttpServer 是...
本免安装包包含了一系列必要的组件,用于在不进行传统安装流程的情况下快速部署和运行Apache HTTP Server。 【描述】:“apr-1.7.0,apr-util-1.6.1,pcre-8.42,openssl-1.1.1g,httpd-2.4.43” 1. **apr (Apache...
1. **apr和apr-util**:Apache Portable Runtime (apr) 是Apache项目的基础库,提供跨平台的系统接口抽象,而apr-util是其扩展,包含数据库连接、认证等功能。安装这两个库的步骤大致为: - 解压文件:`tar -zxvf ...
### Apache HTTP Server 与 Tomcat 的三种连接方式详解 #### 引言 在现代Web开发环境中,Apache HTTP Server 和 Tomcat 是两种常见的服务器软件。Apache HTTP Server 以其强大的静态资源处理能力和灵活性著称,而 ...
Apache服务器的请求处理流程包括接收请求、解析请求、权限检查、资源定位、内容生成、响应生成和日志记录等步骤。以处理动态PHP请求为例,Apache首先接收客户端发送的HTTP请求,解析请求确定资源位置,接着检查...
在安全性方面,Apache HTTP Server支持RFC 2817标准,该标准规定了如何在HTTP连接上透明地实现TLS/SSL,增强了数据传输的安全性。它还提供了模块化的安全性钩子(如mod_authz_*系列模块),允许在不同阶段介入认证...
Apache SSHD使得开发人员能够在Java平台上创建SSH服务器应用程序,这在运维、自动化、云计算等领域具有广泛的应用。 SSH协议的主要优点是它提供了加密的数据传输,包括身份验证和数据完整性检查,确保了在网络中...
### 基于Apache Mina实现的TCP长连接和短连接实例 #### 一、引言 Apache Mina是Apache组织推出的一款优秀的网络应用程序框架,它的全称是Multipurpose Infrastructure for Network Applications(多用途网络应用...
如果你的网站或应用不需要加密连接或者你打算在其他方式下处理加密(例如,通过应用程序级别的加密),可以选择这个版本,它可能在性能上略有优势,因为不需要加载和运行SSL模块。 Apache 2.2.29相较于更早的版本,...
这种设计使得Apache不仅能够满足基本的HTTP服务需求,还能适应各种复杂的Web应用程序和服务,成为现代互联网基础设施中的重要组成部分。通过深入理解Apache的模块化架构,开发者可以更有效地构建和维护高性能的Web...
- **process_connection**:连接处理的主要任务,调用预先定义的连接处理挂钩。任何模块可以通过实现这个挂钩来参与连接处理。 - **ap_read_request**和**ap_process_request**:读取请求数据,进行请求处理,包括...
在Mina中,短连接的实现只需要在完成数据交换后调用`Session.close()`方法,框架会自动执行TCP的关闭流程。 在实际项目中,为了运行Mina示例,我们需要以下组件: 1. `.classpath`:这是Eclipse项目类路径的配置...
3. **更好的性能**:通过优化内存管理和请求处理流程,Apache 2.4 在处理高负载时表现更出色。例如,新的 scoreboard 机制提高了进程间通信效率。 4. **安全增强**:Apache 2.4 提供了更强的身份验证和授权机制,如...
其中,Apache是最常用的Web服务器软件之一,而客户端程序主要是各种浏览器,如Internet Explorer (IE)、Netscape Navigator、Mozilla Firefox等。 #### 二、HTTP协议与Apache的关系 - **HTTP协议**: 超文本传输...
`apache-airflow-providers-apache-spark`包中可能包含针对Spark的各种Operator,如`SparkSubmitOperator`,用于提交Spark应用程序到集群。 - **Sensors**:Sensors是持续检查某些条件直到满足为止的任务,比如等待...
1. `src/main`: 这是主程序的源代码,包括HTTP服务器的核心功能,如请求处理、连接管理、模块接口等。 2. `src/modules`: 这里存放了各种可加载的模块,如mod_deflate(压缩输出),mod_rewrite(URL重写),mod_...
这种方法更精确,可以进一步优化资源处理流程。 ##### 高级选项 为了提升性能和稳定性,可以设置一些高级参数,如超时时间和缓冲区大小。这些参数可以根据服务器的具体情况进行调整,以达到最佳性能。 #### 编辑...
Apache服务器性能的优化包括调整工作模式、限制并发连接数、启用HTTP/2协议、使用缓存模块等。优化策略应根据服务器硬件资源和应用需求来定制。 10. **与其他技术的集成** Apache可以轻松地与各种技术集成,如PHP...
Apache Camel 提供了一个丰富的组件库,涵盖了各种协议和数据格式,如HTTP、FTP、JMS、MQTT、XML和JSON等。通过使用简单的DSL(Domain Specific Language)或Java API,开发者可以构建复杂的路由规则,实现数据的...