NginX "Server" 응답헤더 제거하기

Posted by 대혀니_
2017. 6. 22. 20:35 IT/Linux
이 문서는 nginx 1.8.1 소스코드 컴파일을 한다는 중심으로 서술합니다.
nginx-1.8.1/src/http/ngx_http_header_filter_module.c

약 48행쯤
static char ngx_http_server_string[] = "Server: nginx" CRLF;
static char ngx_http_server_full_string[] = "Server: " NGINX_VER CRLF;
주석처리 

 약 281행쯤 "if (r->headers_out.server == NULL) {" 부분 주석처리



/*
    if (r->headers_out.server == NULL) {
        len += clcf->server_tokens ? sizeof(ngx_http_server_full_string) - 1:
                                     sizeof(ngx_http_server_string) - 1;
    }
*/

458행쯤 " if (r->headers_out.server == NULL) {" 부분 주석처리
    
/*
    if (r->headers_out.server == NULL) {
        if (clcf->server_tokens) {
            p = (u_char *) ngx_http_server_full_string;
            len = sizeof(ngx_http_server_full_string) - 1;
 
        } else {
            p = (u_char *) ngx_http_server_string;
            len = sizeof(ngx_http_server_string) - 1;
        }
 
        b->last = ngx_cpymem(b->last, p, len);
    }
*/

결과
$ curl -I localhost:8081
HTTP/1.1 200 OK
Date: Tue, 27 Sep 2016 15:08:52 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Tue, 27 Sep 2016 15:06:39 GMT
Connection: keep-alive
ETag: "57ea8aff-264"
Accept-Ranges: bytes 만약 웹서버 fingerprinting을 완벽히 막고싶다면 기본 에러페이지(300-500대 에러)를 모조리 수정 할 것을 권장합니다.