빌드 이름으로 nginx를 다시 컴파일하고 현재 구성을 유지합니다.

빌드 이름으로 nginx를 다시 컴파일하고 현재 구성을 유지합니다.

그래서 나는 한동안 nginx 서버를 운영해왔고 내 클라이언트 중 하나에 딱 맞도록 많은 변경을 했습니다. 그들은 최근 침투 테스터를 고용했고 보안을 강화하라고 요구했습니다. 따라서 요구 사항을 충족하려면 nginx의 빌드 이름을 숨겨야 합니다. 하지만 그렇게 하려면 nginx를 다시 컴파일해야 할 것 같습니다. 빌드 이름 옵션을 사용하여 다시 컴파일할 때 구성 등의 모든 변경 사항을 유지하는 방법이 있는지 궁금합니다.

답변1

nginx를 다시 빌드해도 구성은 변경되지 않습니다. 기존 구성을 감지 하면 make install덮어쓰지 않습니다. 확실하게 하려면 복사 nginx.conf하거나 nginx.conf.bak유사하게 하십시오. 그러나 보안 감사를 통해 추가 점수를 얻을 수 있는 구성 관리 및 일종의 빌드 프로세스가 필요한 것 같습니다. 최소한 git구성을 위한 로컬 저장소를 설정하고 새로운 보안 업데이트를 최신 상태로 유지해야 하므로 릴리스를 관리하는 것을 travis고려 하겠습니다 .jenkins

여기에 도달하는 모든 검색의 경우 nginx 버전은 컴파일 시 변수에 의해 설정되지만 NGINX_VER다른 프로세스에서 사용하므로 전역적으로 변경하지 마세요. ngx_http_header_filter_module.c다음 위치에서 변수를 수동으로 변경해야 합니다 .

static u_char ngx_http_server_string[] = "Server: yourservername" CRLF;
static u_char ngx_http_server_full_string[] = "Server: yourservername/1.0" CRLF;
static u_char ngx_http_server_build_string[] = "Server: " NGINX_VER_BUILD CRLF;

답변2

이 댓글에서 필요한 답변을 얻었습니다.https://stackoverflow.com/questions/24594971/how-to-changehide-the-nginx-server-signature/38967105#38967105

우분투에서 작업한다면

먼저 nginx-extras를 설치하세요.

sudo apt-get install nginx-extras

/etc/nginx/nginx.conf로 이동하여 http 아래에 다음을 추가합니다.

http {
    more_set_headers "Server: Your_New_Server_Name";
    server_tokens off; 
}

nginx 다시 시작

sudo service nginx restart

관련 정보