많은 If-None-Match 값으로 인해 요청 헤더 필드의 크기가 서버 제한을 ​​초과합니다


8

다음은 클라이언트가 "400 Bad Request"오류를 겪고 Apache / 2.2.22를 사용하여 Ubuntu 12.04.3 LTS에서 호스팅되는 drupal 홈 페이지를 볼 수없는 것처럼 보이는 흥미로운 사례입니다.

잘못된 요청
브라우저가이 서버가 이해할 수없는 요청을 보냈습니다.
요청 헤더 필드의 크기가 서버 제한을 ​​초과합니다.

패킷 스니핑 출력 :

...
T 2013/09/02 15:23:10.458167 ###.###.###.###:40027 -> ###.###.###.###:80 [A]
GET / HTTP/1.0.
If-None-Match: "1363160742-0", "1363165573-1", "1363175854-1", "1363175854-0", "1363179616-0", "1363181811-0", "1363239319-1", "1363255903-0", "1363259282-0", "1363263398-1", "1363274564-0", "1363329642-0", "1363332613-1", "1363333851-0", "1363599826-0", "1363678909-0", "1363684227-1", "1363699732-0", "1363755181-0", "1363765691-1", "1363767178-0", "1363780208-0", "1363787589-0", "1363795259-1", "1363852409-1", "1363863225-1", "1363928115-0", "1363951793-0", "1363951793-1", "1364133610-1", "1364187608-1", "1364187608-0", "1364203083-0", "1364208174-0", "1364214930-0", "1364219815-0", "1364274441-1", "1364280930-0", "1364280930-1", "1364286055-1", "1364298840-0", "1364298840-1", "1364360674-0", "1364364356-1", "1364381508-0", "1364385520-1", "1364460734-0", "1364882595-1", "1364903271-0", "1364967946-0", "1364967946-1", "1364981713-0", "1364985142-1", "1364992835-1", "1365061578-0", "1365065290-1", "1365076128-0", "1365141088-1", "1365167701-0", "1365171024-0", "1365402404-1", "1365402404-0", "1365411731-1", "1365416882-0", "1365476715-0", "1365487578-0", "1365488880-1", "1365503922-1", "1365514224-1", "1365579101-0", "1365580320-0", "1365582817-0", "1365584926-0", "1365589524-0", "1365608307-0", "1365649987-0", "1365682295-0", "1365685083-0", "1365770532-1", "1365770532-0", "1365844566-0", "1365996619-1", "1366093719-1", "1366093719-0", "1366115408-0", "1366180275-1", "1366186431-0", "1366196476-0", "13662669
...

이 단계에서는 특정 클라이언트로만 제한되는지 확실하지 않지만 다음과 같은 사용자 에이전트 문자열을 가진 사용자가 오류를보고했습니다.

Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/534.57.7 (KHTML, like Gecko) Version/5.1.7 Safari/534.57.7

이제 문제는 어떻게해야합니까, 서버 문제입니까 아니면 잘못 작동하는 클라이언트입니까?


이것은 우분투 질문이 아닙니다. Apache 로그를 살펴보고 전문 커뮤니티의 도움을 얻기 위해이 로그를 사용하십시오.
Luís de Sousa

내 생각은 그것이 우분투 기본 문제 일 수 있다는 것입니다.
inetpro

1
우분투에서 실행되는 웹 서버에 대해 이야기하고 있습니다. @ LuísdeSousa가 제안한대로을 살펴보고 /var/log/apache2/error.log어떤 제한이 위반되었는지 확인하십시오.
guntbert

@ LuísdeSousa 우분투 서버의 모든 부분을 지원합니다. 왜 이것이 우분투 질문이 아닐까요?
Eliah Kagan

@guntbert 흥미로운 부분은 실제 오류가 아닌 요청이 아파치 로그에 기록되지 않는다는 것입니다. 그것은 오징어 리버스 프록시에 기록되고 나는 프록시가 실제로 원인 같은데요
inetpro

답변:


11

문제를 발견했습니다. 일부 사용자 에이전트 및 일부 요청은 웹 서버 기본값에 비해 너무 커집니다. 그것은 어리석은 문제처럼 보이지만 계속해서 나에게 일어나고 nginx있습니다. 일반적으로 바보 쿠키 이름과 업로드가있을 때 ... 어쨌든 ...

해결책은 요청 한계를 뛰어 넘는 것입니다. 당신은 귀하의 사이트에 대한 세계적하거나이를 수행 할 수 있습니다 지침 :LimitRequestFieldSize

LimitRequestFieldSize 32768

32KB (기본값 : 8KB)입니다.


그것이 내가 생각한 것이지만 권장되는 크기에 대해서는 확신하지 못했습니다. 감사!
inetpro

1
의 증가 LimitRequestFieldSize하는 32768도움이되지 않았다.
inetpro

@inetpro Apache를 다시 시작 했습니까? 그리고 그것은 충분히 높은 맥락에 있습니까? .htaccess 파일에서는 작동하지 않습니다.
Oli

1
정의 된 이름 기반 가상 호스트 또는 다른 가상 호스트에 항목을 넣었습니까? 문서는 말한다 : "이름 기반 가상 호스트를 사용하는 경우,이 지시자의 값이 기본값에서 가져옵니다 (첫 번째로 나열된) 가상 호스트는 NameVirtualHost에서의 연결이 매핑했다.". 전역 구성 에서이 작업을 수행하는 것이 좋습니다. 가상 호스트에서이를 수행하는 데 필요한 문제점은 요청 헤더 자체에 필수 가상 호스트의 이름이 포함되어 있다는 것입니다.
Robie Basak

2
LimitRequestFieldSize 65536LimitRequestLine 65536LimitXMLRequestBody 0⓸ ??? ⓹ℙℛṎℱỈ Ꭲ☕
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.