如何调整nginx和apache服务器的header限制的大小

如何调整nginx和apache服务器的header限制的大小,第1张

现在主流的apache和nginx服务器他们都可以自由设置header的头信息上限大小。我们通过配置文件修改来达到目的。

nginx默认的header长度上限腊雀是4k,如果超过了这个值

如果header头信息请求超过了,nginx会直接返回400错误

可以通清磨过以下2个参数来调整nginx的header上限

client_header_buffer_size 16k

large_client_header_buffers 4 16k

看起来是,nginx默认会用client_header_buffer_size这个buffer来读取header值,如果header过大,它会使用large_client_header_buffers来读取

引用client_header_buffer_size

syntax: client_header_buffer_size size

default: 1k

context: http, server

Directive sets the headerbuffer size for the request header from client.

For the overwhelming majority of requests it is completely sufficient a buffer size of 1K.

However if a big cookie is in the request-header or the request has come from a wap-client the header can not be placed in 1K, therefore, the request-header or a line of request-header is not located completely in this buffer nginx allocate a bigger buffer, the size of the bigger buffer can be set with the instruction large_client_header_buffers.

引用答局斗large_client_header_buffers

syntax: large_client_header_buffers number size

default: large_client_header_buffers 4 4k/8k

context: http, server

Directive assigns the maximum number and size of buffers for large headers to read from client request.

The request line can not be bigger than the size of one buffer, if the client send a bigger header nginx returns error "Request URI too large" (414).

The longest header line of request also must be not more than the size of one buffer, otherwise the client get the error "Bad request" (400).

Buffers are separated only as needed.

By default the size of one buffer is equal to the size of page, depending on platform this either 4K or 8K, if at the end of working request connection converts to state keep-alive, then these buffers are freed.

对于apache2来说,它默认值是8k

可以调整以下2个参数

LimitRequestLine 16k

LimitRequestFieldSize 16k

LimitRequestLine 指令设置的是每一个header长度的上线

引用LimitRequestLine 指令

说明 限制接受客户端发送的HTTP请求行的字节数

语法 LimitRequestLine bytes

默认值 LimitRequestLine 8190

作用域 server config

状态 核心(C)

模块 core

bytes将设置HTTP请求行的字节数限制。

LimitRequestLine指令允许服务器管理员增加或减少客户端HTTP请求行允许大小的限制。因为请求行包括HTTP方法、URI、协议版本,所以LimitRequestLine指令会限制请求URI的长度。服务器会需要这个值足够大以装载它所有的资源名,包括可能在GET请求中所传递的查询部分的所有信息。

这个指令给了服务器管理员更大的可控性以控制客户端不正常的请求行为。这有助于避免某些形式的拒绝服务攻击。

LimitRequestFieldSize指令设置的是所有header总长度的上限值

引用LimitRequestFieldSize 指令

说明 限制客户端发送的请求头的字节数

语法 LimitRequestFieldsize bytes

默认值 LimitRequestFieldsize 8190

作用域 server config

状态 核心(C)

模块 core

bytes指定了HTTP请求头允许的字节大小。

LimitRequestFieldSize指令允许服务器管理员增加或减少HTTP请求头域大小的限制。一般来说,服务器需要此值足够大,以适应普通客户端的任何请求的头域大小。一个普通头域的大小对于不同的客户端来说是有很大差别的,一般与用户配置他们的浏览器以支持更多的内容协议密切相关。SPNEGO的认证头最大可能达到12392字节。

这个指令给了服务器管理员更大的可控性以控制客户端不正常的请求行为。这有助于避免某些形式的拒绝服务攻击。注:该设置在apache root/manual/mod/core.xml中进行设置

Apache Camel的Header、Property、Body配置示例

<?xml version="燃氏掘1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:camel="http://camel.apache.org/schema/spring"

xsi:schemaLocation="

http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd

http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd">

<bean id="echo" class="com.lala.bean.Echo"></bean>

<bean id="bean1" class="com.lala.bean.Bean1"></bean>

<camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">

<route autoStartup="true">

<核雹from uri="timer://aaa?fixedRate=true&period=60000" />

<process ref="bean1"/>

<!-- 设置所有的headers(会去掉之前的所有header) -->

<setOutHeader headerName="name">皮核

<constant>白展堂</constant>

</setOutHeader>

<!-- 添加一个header -->

<setHeader headerName="id">

<constant>100010</constant>

</setHeader>

<!-- 设置property -->

<setProperty propertyName="type">

<simple>${in.header.id}</simple>

</setProperty>

<!-- 设置body -->

<setBody>

<simple>name:${in.header.name},type:${property.type}</simple>

</setBody>

<process ref="echo"/>

</route>

</camelContext>

</beans>

1、检查php.ini文件,确认default_charset设置为正确值,如utf-8等链前。

2、在php.ini文件中,添加一行”mime_magic.magicfile=<path_to_mime_magic_file>”,其中<path_to_mime_magic_file>替换为文件的实际路径,以便PHP能够正确识别文件的编码。

3、确保Apache服务器有AddDefaultCharset设置,并且其值与php.ini文件中的default_charset值一致。

4、确保Apache服务器的mod_mime模块启用,以便它能够根据文件的扩展名正确设置文件的编码。

5、确保Apache服务器的mod_headers模块启用,以便它能够使用php_header()函数正确设置文件的字符集。

6、在Apache服务器的配置文件中,添加一行”AddDefaultCharset <charset>”,其中<charset>丛碰替换为正确的字符集名称,以便Apache能够正确设置文件的编码。

7、在php文件中,使用php_header()函数设置文件的字符集,该函数需要mod_headers模块支渗唤谈持。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/8201981.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存