운영 및 유지보수 엔진스 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 도구

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

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

SublimeText3 중국어 버전

SublimeText3 중국어 버전

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

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

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

뜨거운 주제

PHP를 사용하여 Q & A 커뮤니티 플랫폼을 개발하는 방법 PHP 대화 형 커뮤니티 수익 창출 모델에 대한 자세한 설명 PHP를 사용하여 Q & A 커뮤니티 플랫폼을 개발하는 방법 PHP 대화 형 커뮤니티 수익 창출 모델에 대한 자세한 설명 Jul 23, 2025 pm 07:21 PM

1. PHP 개발 질문 및 답변 커뮤니티에서 Laravel MySQL VUE/React 조합의 첫 번째 선택은 생태계의 성숙과 높은 개발 효율로 인해 Laravel MySQL VUE/React 조합의 첫 번째 선택입니다. 2. 고성능은 캐시 (REDIS), 데이터베이스 최적화, CDN 및 비동기 큐에 의존해야합니다. 3. 입력 필터링, CSRF 보호, HTTPS, 비밀번호 암호화 및 권한 제어로 보안을 수행해야합니다. 4. 돈 선택적 광고, 회원 가입, 보상, 커미션, 지식 지불 및 기타 모델은 핵심은 커뮤니티 톤 및 사용자 요구에 맞는 것입니다.

PHP 컨테이너를 자동 구조로 만드는 방법은 무엇입니까? PHP 환경의 지속적으로 통합 된 CI 구성 방법 PHP 컨테이너를 자동 구조로 만드는 방법은 무엇입니까? PHP 환경의 지속적으로 통합 된 CI 구성 방법 Jul 25, 2025 pm 08:54 PM

PHP 컨테이너가 자동 구성을 지원할 수 있도록 핵심은 CI (Continuous Integration) 프로세스를 구성하는 데 있습니다. 1. DockerFile을 사용하여 기본 이미지, 확장 설치, 종속성 관리 및 권한 설정을 포함하여 PHP 환경을 정의합니다. 2. Gitlabci와 같은 CI/CD 도구를 구성하고 .gitlab-ci.yml 파일을 통해 빌드, 테스트 및 배포 단계를 정의하여 자동 구성, 테스트 및 배포를 달성합니다. 3. PHPUNIT와 같은 테스트 프레임 워크를 통합하여 코드 변경 후 테스트가 자동으로 실행되도록합니다. 4. Kubernetes와 같은 자동 배포 전략을 사용하여 배포 .yaml 파일을 통해 배포 구성을 정의합니다. 5. Dockerfile 최적화 및 다단계 구조를 채택하십시오

NGINX 및 PHP 서비스의 조합을 구성하기 위해 MacOS를 사용하여 PHP NGINX 환경을 구축하는 방법 NGINX 및 PHP 서비스의 조합을 구성하기 위해 MacOS를 사용하여 PHP NGINX 환경을 구축하는 방법 Jul 25, 2025 pm 08:24 PM

MAC 환경 구조에서 홈 브루의 핵심 역할은 소프트웨어 설치 및 관리를 단순화하는 것입니다. 1. 홈브리는 종속성을 자동으로 처리하고 복잡한 편집 및 설치 프로세스를 간단한 명령으로 캡슐화합니다. 2. 소프트웨어 설치 위치 및 구성의 표준화를 보장하기 위해 통합 소프트웨어 패키지 생태계를 제공합니다. 3. 서비스 관리 기능을 통합하고 양조 서비스를 통해 서비스를 쉽게 시작하고 중지 할 수 있습니다. 4. 편리한 소프트웨어 업그레이드 및 유지 관리 및 시스템 보안 및 기능을 향상시킵니다.

독립적 인 PHP 작업 컨테이너 환경을 구축하는 방법. PHP 타임 스크립트를 실행하기위한 컨테이너를 구성하는 방법 독립적 인 PHP 작업 컨테이너 환경을 구축하는 방법. PHP 타임 스크립트를 실행하기위한 컨테이너를 구성하는 방법 Jul 25, 2025 pm 07:27 PM

독립적 인 PHP 작업 컨테이너 환경 구축은 Docker를 통해 구현할 수 있습니다. 특정 단계는 다음과 같습니다. 1. Docker 및 DockerCompose를 기초로 설치하십시오. 2. DockerFile 및 Crontab 파일을 저장하기위한 독립 디렉토리를 만듭니다. 3. PHPCLI 환경을 정의하고 CRON 및 필요한 확장을 설치하려면 dockerfile을 작성하십시오. 4. 타이밍 작업을 정의하기 위해 Crontab 파일을 작성하십시오. 5. docker-compose.yml 마운트 스크립트 디렉토리를 작성하고 환경 변수를 구성하십시오. 6. 컨테이너를 시작하고 로그를 확인하십시오. 웹 컨테이너에서 타이밍 작업을 수행하는 것과 비교할 때 독립 컨테이너는 자원 격리, 순수한 환경, 강력한 안정성 및 쉬운 확장의 장점이 있습니다. 로깅 및 오류 캡처를 보장합니다

Linux에서 하드 드라이브를 안전하게 지우는 방법 Linux에서 하드 드라이브를 안전하게 지우는 방법 Jul 24, 2025 am 12:08 AM

실수로 시스템 디스크를 삭제하지 않도록 대상 하드 디스크 장치 이름 (예 : /dev /sda)을 확인하십시오. 2. sudoddif =/dev/Zeroof =/dev/sdxbs = 1mstatus = 전체 디스크에서 0 값을 덮어 쓰기위한 진행 상황 대부분의 시나리오에 적합합니다. 3. 3 개의 랜덤 데이터 덮어 쓰기에 sudoshred-v-n3/dev/sdx를 사용하여 복원 할 수 없는지 확인하십시오. 4. 선택적으로 파괴적인 쓰기 테스트를 위해 SudobadBlocks-WSV/Dev/SDX를 실행합니다. 마지막으로 sudohexdump-c/dev/sdx | head를 사용하여 모두 제로인지 확인하고 완벽한 안전 지우기를 확인하십시오.

Kubernetes를 사용하여 PHP 환경을 일관된 생산 및 로컬 컨테이너 구성 표준을 유지하는 방법 Kubernetes를 사용하여 PHP 환경을 일관된 생산 및 로컬 컨테이너 구성 표준을 유지하는 방법 Jul 25, 2025 pm 06:21 PM

PHP 환경과 생산 사이의 불일치 문제를 해결하기 위해 핵심은 Kubernetes의 컨테이너화 및 오케스트레이션 기능을 사용하여 환경 일관성을 달성하는 것입니다. 특정 단계는 다음과 같습니다. 1. 모든 PHP 버전, 확장, 종속성 및 웹 서버 구성을 포함하여 통합 된 Docker 이미지를 구축하여 동일한 이미지가 개발 및 생산에 사용되도록합니다. 2. Kubernetes의 구성 및 비밀을 사용하여 비 민감하고 민감한 구성을 관리하고 볼륨 마운트 또는 환경 가변 주입을 통해 다양한 환경 구성의 유연한 스위칭을 달성합니다. 3. Unified Kubernetes 배포 정의 파일 (배포 및 서비스 등)을 통한 응용 프로그램 동작 일관성을 보장하고 버전 제어에 포함시킵니다. 4.

Cron 및 Anacron으로 Linux에서 작업을 예약하는 방법 Cron 및 Anacron으로 Linux에서 작업을 예약하는 방법 Aug 01, 2025 am 06:11 AM

cronisusedforprecisesCeedulingonalways-onsystems, whileanacronensuresperiodictasksrunonsystems that thatorenuouslypowered, suchaslaptops; 1. usecronforexacttiming (예 : 3amdaily) viacrontab-ewithsyntaxminhourdomondowcommand;

Mongo 데이터베이스에 대한 PHP 연결을위한 PHP 환경 설정에 대한 MongoDB 지원을 구성하는 방법 Mongo 데이터베이스에 대한 PHP 연결을위한 PHP 환경 설정에 대한 MongoDB 지원을 구성하는 방법 Jul 23, 2025 pm 06:54 PM

MongoDB를 지원하기 위해 PHP 환경을 구성하려면 핵심 단계는 MongoDB의 PHP 드라이버를 설치하고 활성화하여 PHP 응용 프로그램이 MongoDB 데이터베이스와 통신 할 수 있도록하는 것입니다. 1. Mongodbphp 드라이버를 설치하십시오. PECL을 사용하여 설치하는 것이 좋습니다. PECL이없는 경우 먼저 PHP 개발 패키지 및 관련 컴파일 도구를 설치해야합니다. 2. php.ini 파일을 편집하고 Extension = mongodb.so (또는 .dll)를 추가하여 확장자를 활성화합니다. 3. 웹 서버 또는 PHP-FPM 서비스를 다시 시작하여 구성을 적용하도록합니다. 4. PHPINFO () 또는 PHP-M을 통해 확장이 성공적으로로드되는지 확인하십시오. 자주 묻는 질문은 누락 된 PECL 명령, 컴파일 오류, php.ini가 포함됩니다.

See all articles