운영 및 유지보수 엔진스 Linux 서버 nginx 액세스 로그에서 다수의 http 400 오류를 해결하는 방법

Linux 서버 nginx 액세스 로그에서 다수의 http 400 오류를 해결하는 방법

May 21, 2023 pm 07:28 PM
linux nginx

Linux服务器nginx访问日志里出现大量http 400错误怎么解决

서버의 오류 로그는 다음과 유사합니다:

124.65.133.242 – – [27/oct/2014:14:30:51 +0800] “-” 400 0 “-” “-”
124.65 .133.242 – – [27/oct/2014:14:31:45 +0800] “-” 400 0 “-” “-”
124.65.133.242 – – [27/oct/2014:14:31:45 +0800 ] “-” 400 0 “-” “-”
124.65.133.242 – – [27/oct/2014:14:31:45 +0800] “-” 400 0 “-” “-”

나오세요

nginx 로그 파일을 분석한 결과, 정상적인 방문 후에도 몇 개의 400 오류가 발생하는 것으로 나타났습니다. 매번 약 1~6개의 연속 오류가 있었고, 고객이 방문할 때마다 400 오류가 발생하지 않았습니다.

400 오류가 발생한 이전 액세스를 관찰하는 것은 정상입니다. 200 상태 코드, 일반 파일, 일반 원본, 일반 사용자 에이전트... 모든 것이 조화로운데 400 오류는 왜 발생했을까요?

주의 깊게 관찰한 결과, 400에러를 발생시킨 이전 방문의 User-Agent는 모두 구글 크롬 브라우저에 남겨져 있는 것을 발견했습니다. 이는 400에러가 크롬 브라우저에서 발생했다는 의미입니다. 그러나 로컬 패킷 캡처 이후 크롬은 서버에 비정상적인 요청이나 데이터 패킷을 보내지 않은 것으로 확인됐다.

패킷 캡처 분석에서 Chrome은 서버에 액세스할 때 일반적으로 5~6개의 연결을 두 개 이상 시작한 것으로 나타났습니다. 요청한 리소스에 그렇게 많은 연결이 필요하지 않은 경우 Chrome은 사용되지 않는 연결을 닫습니다. 사전 연결이라고 합니다.

보통 웹사이트를 방문할 때 가장 먼저 얻는 것은 웹페이지에 필요한 CSS, js, 그림 등과 같은 다른 미디어 리소스 파일에 대한 링크가 포함된 기본 html 파일입니다. 기본 html 파일은 하나에 있습니다. 도메인에서 사전 연결은 다른 파일을 얻기 위해 서버에 연결하기 전에 html 파일을 얻기 위해 기다리는 대신 html을 얻기 전에 많은 tcp 연결을 설정하는 것을 의미합니다. 언젠가 이 기술은 웹 페이지 렌더링 속도를 크게 향상시킬 수 있습니다.

웹 페이지 HTML 링크의 리소스가 상대적으로 작거나 클라이언트에 캐시가 있고 다운로드를 위해 연결할 필요가 없는 경우 Chrome 브라우저에서 발행한 5-6개의 연결 중 하나만 필요할 가능성이 높습니다. , 나머지는 이런 방식으로 닫아야 합니다. 문제가 발생합니다. 서버가 요청을 보내지 않고 연결됩니다. 이 경우 nginx는 이를 400 오류로 처리하지만 연결이 닫혀서 오류 메시지가 클라이언트로 전송되지 않습니다. 이로 인해 로그 파일에는 오류가 기록되지만 아무것도 볼 수 없습니다. 패킷 캡처 분석.

Test
위 분석 결과를 확인하는 방법은 매우 간단합니다. cmd.exe 명령줄을 열고 telnet serverip 80을 입력한 후 연결이 성공할 때까지 기다린 후 cmd를 직접 닫습니다. 400 오류 기록.

댓글 하나
사전 연결의 장점은 이미 매우 명확하지만 웹마스터가 이를 최적화했거나 쿠키 없는 기술을 사용했거나 웹 페이지 및 정적 리소스에 대해 다른 서버를 사용했다면 단점도 있습니다. 웹페이지 필수 css, js 리소스가 메인 html과 동일한 도메인에 있지 않고, 동일한 IP에 없을 수도 있으므로 사전 연결은 쓸모가 없을 뿐만 아니라 메인 html 서버에 불필요한 부담을 줍니다.

그 밖의 이유

인터넷에서 많은 분들이 관련 글을 작성해 오셨는데, 헤더의 크기가 400을 초과하여 잘못된 요청이라는 반응이 나오는 경우가 대부분입니다. , 포트와 같은 또 다른 가능성이 있습니다. 테스트 도구는 포트가 활성 상태인지 확인합니다. lvs와 같은 것도 이런 종류의 문제를 일으킬 수 있으며, 그러면 로그에 400 오류가 많이 나타납니다.

위 문제의 경우 nginx.conf에서 client_header_buffer_size와 Large_client_header_buffers를 모두 늘려 이 문제를 완화할 수 있습니다.

위 내용은 Linux 서버 nginx 액세스 로그에서 다수의 http 400 오류를 해결하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. 크로스 플레이가 있습니까?
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Docker에서 거울을 만드는 방법 Docker에서 거울을 만드는 방법 Apr 15, 2025 am 11:27 AM

Docker 이미지 생성 단계 : 빌드 지침이 포함 된 Dockerfile을 작성하십시오. Docker 빌드 명령을 사용하여 터미널에 이미지를 빌드하십시오. Docker 태그 명령을 사용하여 이미지를 태그하고 이름과 태그를 지정하십시오.

Docker Desktop을 사용하는 방법 Docker Desktop을 사용하는 방법 Apr 15, 2025 am 11:45 AM

Docker Desktop을 사용하는 방법? Docker Desktop은 로컬 머신에서 Docker 컨테이너를 실행하는 도구입니다. 사용 단계는 다음과 같습니다. 1. Docker Desktop 설치; 2. Docker Desktop을 시작하십시오. 3. Docker 이미지를 만듭니다 (Dockerfile 사용); 4. Docker Image 빌드 (Docker 빌드 사용); 5. 도커 컨테이너를 실행하십시오 (Docker Run 사용).

Docker 컨테이너의 이름을 확인하는 방법 Docker 컨테이너의 이름을 확인하는 방법 Apr 15, 2025 pm 12:21 PM

단계를 따르면 Docker 컨테이너 이름을 쿼리 할 수 ​​있습니다. 모든 컨테이너 (Docker PS)를 나열하십시오. 컨테이너 목록을 필터링합니다 (GREP 명령 사용). 컨테이너 이름 ( "이름"열에 위치)을 가져옵니다.

Docker가 컨테이너를 시작하는 방법 Docker가 컨테이너를 시작하는 방법 Apr 15, 2025 pm 12:27 PM

Docker Container Startup 단계 : 컨테이너 이미지를 당기기 : "Docker Pull [Mirror Name]"을 실행하십시오. 컨테이너 생성 : "docker"[옵션] [미러 이름] [명령 및 매개 변수]를 사용하십시오. 컨테이너를 시작하십시오 : "Docker start [컨테이너 이름 또는 ID]"를 실행하십시오. 컨테이너 상태 확인 : 컨테이너가 "Docker PS"로 실행 중인지 확인하십시오.

Docker 이미지가 실패하면해야 할 일 Docker 이미지가 실패하면해야 할 일 Apr 15, 2025 am 11:21 AM

실패한 Docker 이미지 빌드에 대한 문제 해결 단계 : Dockerfile 구문 및 종속성 버전을 확인하십시오. 빌드 컨텍스트에 필요한 소스 코드 및 종속성이 포함되어 있는지 확인하십시오. 오류 세부 사항에 대한 빌드 로그를보십시오. -표적 옵션을 사용하여 계층 적 단계를 구축하여 실패 지점을 식별하십시오. 최신 버전의 Docker Engine을 사용하십시오. -t [image-name] : 디버그 모드로 이미지를 빌드하여 문제를 디버깅하십시오. 디스크 공간을 확인하고 충분한 지 확인하십시오. 빌드 프로세스에 대한 간섭을 방지하기 위해 Selinux를 비활성화하십시오. 커뮤니티 플랫폼에 도움을 요청하고 Dockerfiles를 제공하며보다 구체적인 제안을 위해 로그 설명을 구축하십시오.

Docker 용 컨테이너를 만드는 방법 Docker 용 컨테이너를 만드는 방법 Apr 15, 2025 pm 12:18 PM

Docker에서 컨테이너 만들기 : 1. 이미지를 당기기 : Docker Pull [Mirror Name] 2. 컨테이너 만들기 : Docker Run [옵션] [미러 이름] [명령] 3. 컨테이너 시작 : Docker Start [컨테이너 이름]

VSCODE에 필요한 컴퓨터 구성 VSCODE에 필요한 컴퓨터 구성 Apr 15, 2025 pm 09:48 PM

대 코드 시스템 요구 사항 : 운영 체제 : Windows 10 이상, MacOS 10.12 이상, Linux 배포 프로세서 : 최소 1.6GHz, 권장 2.0GHz 이상의 메모리 : 최소 512MB, 권장 4GB 이상의 저장 공간 : 최소 250MB, 권장 1GB 및 기타 요구 사항 : 안정 네트워크 연결, Xorg/Wayland (LINUX)

VSCODE는 확장자를 설치할 수 없습니다 VSCODE는 확장자를 설치할 수 없습니다 Apr 15, 2025 pm 07:18 PM

VS 코드 확장을 설치하는 이유는 다음과 같습니다. 네트워크 불안정성, 불충분 한 권한, 시스템 호환성 문제, C 코드 버전은 너무 오래된, 바이러스 백신 소프트웨어 또는 방화벽 간섭입니다. 네트워크 연결, 권한, 로그 파일, 업데이트 대 코드 업데이트, 보안 소프트웨어 비활성화 및 대 코드 또는 컴퓨터를 다시 시작하면 점차 문제를 해결하고 해결할 수 있습니다.

See all articles