nginx에서 요청 헤더 로깅

nginx에서 요청 헤더 로깅

클라이언트 요청의 사용자 정의 헤더를 기록하고 싶습니다. 내 log_format에 "$http_my_header"를 추가했는데 POST 요청이 제대로 기록됩니다. 반면에 모든 GET 요청은 null 값을 기록합니다.

GET 요청 예시:

GET /pws HTTP/1.1
upgrade: websocket
connection: Upgrade
sec-websocket-key: XXXX
host: XXXX
sec-websocket-origin: XXXX
sec-websocket-version: 13
X-Plumbr-sessionId: XXXX
X-Plumbr-accountId: XXXX
X-Plumbr-build: SNAPSHOT

내 nginx log_format에 다음이 포함되어 있습니다.

"$http_x_plumbr_accountid" "$http_x_plumbr_build" 

GET 요청의 레코드 헤더에 특별한 구성이 필요합니까?

답변1

이것이 얼마나 도움이 될지는 모르겠지만 가치가 있는 것은 표준 요청 변수를 통해 요청 헤더를 설정하고 올바르게 수신되고 설명되는 IIS 서버로 프록시하는 데 사용하는 작동하는 서버 블록 구성입니다. Nginx 문서를 참조하여 사용 가능한 모든 변수를 확인하고 해당 변수(또는 필요한 변수)를 활용하여 액세스 로그에 포함함으로써 동일한 작업을 수행할 수 있다고 확신합니다. 이것은 내가 사용하고 있는 서버 블록입니다:

server {
        listen       8001;
        server_name  localhost;
        location / {
            proxy_set_header  x-client-IP      $remote_addr;
            proxy_set_header  x-forwarded-for  $proxy_add_x_forwarded_for;
            proxy_set_header  host             $http_host;
            proxy_pass        http://127.0.0.1:80/;
        }
}

로그 형식을 지정하고 헤더 값을 생성 및/또는 가져오는 위치에 따라 동일한 작업이 수행됩니다. 요청 유형 논리를 사용할 수도 있습니다. GET이 제대로 작동하는 것처럼 보이고 POST가 예기치 않게 작동하는 경우 이를 확인하는 것이 좋습니다.

관련 정보