SERVER/Nginx2014. 8. 29. 15:28
IE나 크롬 개발자 도구로 Response Headers 보게 되면  아래와 같이 서버버젼과 PHP버젼이 적나하게 보이는 경우가 있다
항상 버젼 업데이트를 한다고 하면 문제 없겠지만 늘 버그/보안취약점이 나와서 버젼 업데이트가 되고 있는 중에 
해당 버젼을 확인하고 취약점을 해킹하는 경우가 발생한다 그래서 해당 정보의 경우 숨기는 게 보다 안전하다고 생각된다.

  1. Cache-Control:
    no-store, no-cache, must-revalidate, post-check=0, pre-check=0
  2. Connection:
    keep-alive
  3. Content-Type:
    text/html; charset=UTF-8
  4. Date:
    Fri, 29 Aug 2014 06:22:59 GMT
  5. Expires:
    Thu, 19 Nov 1981 08:52:00 GMT
  6. Pragma:
    no-cache
  7. Server:
    nginx/1.6.1
  8. Transfer-Encoding:
    chunked
  9. X-Powered-By:
    PHP/5.5.15


※ X-Powered-By:PHP/5.5.15 삭제

vi /etc/php.ini

expose_php = Off <== OFF로 변경


※ Nginx 숨기기

http://wiki.nginx.org/HttpCoreModule#server_tokens

vi /etc/nginx/nginx.conf

server_tokens off; <==내용추가함


=> php와 nginx수정하였다면 php-fpm과 nginx 재시작해줘야됨


※ Nginx라는 서버이름을 바꾸고 싶을때

1. HttpHeadersMoreModule 추가모듈설치 하여서 셋팅

http://wiki.nginx.org/HttpHeadersMoreModule#Installation

※ 소스설치시 추가하면됨

./configure --prefix=/opt/nginx --add-module=/path/to/headers-more-nginx-module

※ set the Server output header 

    more_set_headers 'Server: my-server';


2. 컴파일전에 소스코드에서 해당내용 삭제 또는 변경 

http://forum.nginx.org/read.php?11,1646

vi /path/to/nginx-0.*/src/http/ngx_http_header_filter_module.c lines 48 and 49:

====================================================

static char ngx_http_server_string[] = "Server: nginx" CRLF;

static char ngx_http_server_full_string[] = "Server: " NGINX_VER CRLF;

====================================================


※ Apache 경우

vi /etc/httpd/conf/httpd.conf

ServerTokens Prod

ServerSignature Off

=====================================================

ServerTokens Prod[uctOnly] => Server: Apache
ServerTokens Major => Server: Apache/2
ServerTokens Minor => Server: Apache/2.0
ServerTokens Min[imal] => Server: Apache/2.0.41
ServerTokens OS : Server => Apache/2.0.41 (Unix)
ServerTokens Full : Server => Apache/2.0.41 (Unix) PHP/4.2.2 MyMod/1.2


Posted by 시니^^