mod_proxy_http
描述: | mod_proxy的 HTTP 支持模块 |
状态: | 延期 |
模块标识符: | proxy_http_module |
源文件: | mod_proxy_http.c |
摘要
该模块需要mod_proxy的服务。它提供用于代理 HTTP 和 HTTPS 请求的 features。mod_proxy_http支持 HTTP/0.9,HTTP/1.0 和 HTTP/1.1.它不提供任何缓存功能。如果要设置高速缓存代理,可能需要使用mod_cache模块的附加服务。
因此,为了获得处理 HTTP 代理请求的能力,必须在服务器中存在mod_proxy和mod_proxy_http。
警告
在有保护你的服务器之前不要启用代理。开放代理服务器对您的网络和整个 Internet 都是危险的。
环境变量
除了控制mod_proxy行为的 configuration 指令外,还有许多控制 HTTP 协议提供程序的环境变量。设置为任何 value 时,将启用下面未指定特定值的环境变量。
- proxy-sendextracrlf
导致代理在请求结束时发送额外的 CR-LF 换行符。这是某些浏览器中的错误的解决方法。 - force-proxy-request-1.0
强制代理将请求作为 HTTP/1.0 发送到后端并禁用 HTTP/1.1 features。 - proxy-nokeepalive
强制代理在每个请求后关闭后端连接。 - proxy-chain-auth
如果代理需要身份验证,它将读取并使用 client 发送的代理身份验证凭据。使用 proxy-chain-auth,它还会将凭据转发给链中的下一个代理。如果您有一组共享身份验证信息的代理,则可能需要这样做。安全警告:除非您知道需要,否则不要设置此项,因为它会转发敏感信息! - proxy-sendcl
HTTP/1.0 要求包含正文(e.g. POST 请求)的所有 HTTP 请求都包含 Content-Length 标头。无论 Client 发送给代理的是什么,此环境变量都会强制 Apache 代理将此标头发送到后端服务器。它可以确保代理 HTTP/1.0 或未知后端时的兼容性。但是,它可能要求代理缓冲整个请求,因此对于大型请求来说效率非常低。 - proxy-sendchunks 或 proxy-sendchunked
这与 proxy-sendcl 相反。它允许使用分块传输编码将请求主体发送到后端。这允许有效地流式传输请求,但要求后端服务器支持 HTTP/1.1. - proxy-interim-response
此变量采用值 RFC(默认值)或 Suppress。早期的 httpd 版本会抑制从后端发送的 HTTP 临时(1xx)响应。这在技术上违反了 HTTP 协议。实际上,如果后端发送临时响应,它本身可能会以我们一无所知或只是破坏的方式扩展协议。所以这现在是可配置的:将 proxy-interim-response RFC 设置为完全符合协议,或 proxy-interim-response 抑制以抑制临时响应。 - proxy-initial-not-pooled
如果设置了此变量,则如果 client 请求是前端连接上的初始请求,则不会重用池化连接。这避免了由代理连接检查后以及代理发送的数据到达后端之前后端服务器关闭池连接的竞争条件导致的“代理:错误读取状态 line from remote server”错误消息。必须记住,设置此变量会降低 performance,尤其是使用 HTTP/1.0 clients。
请求备注
mod_proxy_http使用LogFormat或ErrorLogFormat中的%{VARNAME}n
格式为 logging 创建以下请求注释:
- proxy-source-port
本地 port 用于连接到后端服务器。 - proxy-status
从后端服务器收到的 HTTP 状态。