nginx 1.31.5의 제어 API는 실패한 리로드를... 노트

nginx 1.31.5의 제어 API는 실패한 리로드를 로그 라인 대신 HTTP 422로 처리합니다.

Nginx 버전 1.31.5는 Unix 소켓 또는 TCP 포트를 통해 접근 가능한 새로운 제어 API를 도입했습니다. 이 API는 HTTP 기반 재로드를 허용하며, 기존의 신호 기반 재로드 방식과 달리 구조화된 응답을 제공합니다. 명령줄 플래그로 활성화할 수 있으며, 공식 Docker 이미지에는 필요한 컴파일이 포함되어 있습니다. API의 엔드포인트 트리는 순차적인 GET 요청을 통해 발견할 수 있습니다. 주요 엔드포인트로는 워커 PID를 얻기 위한 /1/control/processes와 라이브 구성을 검색하기 위한 /1/control/config가 있습니다. /1/control/config에 대한 PATCH 요청은 디스크에서 구성 파일을 다시 읽어 구성을 재로드하도록 트리거합니다. 이 API는 실패한 재로드 시 파싱 가능한 JSON 오류 메시지를 반환하여, 정보가 적은 신호 방식과 달리 상당한 이점을 제공합니다. 초기 가정과는 달리, API 재로드 프로세스가 신호 방식보다 눈에 띄게 빠르지는 않습니다. 동시성 테스트 결과, 사용된 방법에 관계없이 인플라이트 요청은 재로드에 영향을 받지 않는 것으로 나타났습니다. 제어 API는 네트워크 포트에 바인딩될 경우 네이티브 인증이 부족하고 네트워크 접근 권한이 있는 누구나 악용할 수 있으므로 상당한 보안 위험을 수반합니다. Unix 소켓에 엄격한 파일 권한으로 소켓을 바인딩하는 것이 권장되는 완화 조치이며, 비권한 사용자를 효과적으로 차단합니다. 제어 소켓을 활성화하면 마스터 프로세스에 약간의 메모리 오버헤드가 발생합니다. 테스트 결과, 바인드 마운트된 구성 파일에 대한 호스트 측 파일 편집이 실행 중인 컨테이너로 전파되지 않을 수 있으며, 즉각적인 업데이트를 위해서는 docker cp와 같은 방법이 필요합니다. 제어 API의 주요 이점은 재로드 중 우수한 오류 보고 기능에 있으며, 배포 스크립트에 유용합니다. 적절한 권한을 가진 Unix 소켓에만 제어 소켓을 바인딩하는 것이 강력히 권장됩니다. 관리자는 Nginx 버전 1.31.5 이상에서 네트워크에 바인딩된 제어 소켓이 있는지 시스템을 감사해야 합니다.