문제

nginx만 표시하도록 버전을 숨기는 옵션이 있지만, 아무것도 표시하지 않거나 헤더를 변경하지 않도록 숨길 수 있는 방법이 있습니까?

도움이 되었습니까?

해결책

Apache와 마찬가지로 소스를 빠르게 편집하고 다시 컴파일합니다.에서 Calomel.org:

서버:String은 클라이언트로 다시 전송되어 실행중인 HTTP 서버와 어떤 버전이 있는지 알려주는 헤더입니다.이 문자열은 Alexia 및 Netcraft와 같은 장소에서 인터넷에서 라이브 유형의 웹 서버 수와 ​​어떤 유형의 웹 서버 수에 대한 통계를 수집하는 데 사용됩니다.Nginx의 저자 및 통계를 지원하려면이 문자열을 그대로 유지하는 것이 좋습니다.그러나 보안의 경우 사람들이 자신이 실행중인 것을 알기를 원하지 않으며 소스 코드에서이를 변경할 수 있습니다.소스 파일을 편집합니다 src/http/ngx_http_header_filter_module.c48행과 49행을 보세요.문자열을 원하는 모든 것으로 변경할 수 있습니다.

## vi src/http/ngx_http_header_filter_module.c (lines 48 and 49)
static char ngx_http_server_string[] = "Server: MyDomain.com" CRLF;
static char ngx_http_server_full_string[] = "Server: MyDomain.com" CRLF;

2011년 3월 편집: Nginx의 표준을 대체하는 새로운 옵션을 지적한 아래 Flavius의 제안 HttpHeaders모듈 갈래와 함께 HttpHeadersMore모듈.표준 모듈을 다시 컴파일하는 것은 여전히 ​​빠른 수정이며, 표준 모듈을 사용하고 서버 문자열을 자주 변경하지 않을 경우 의미가 있습니다.그러나 그 이상을 원한다면 HttpHeadersMoreModule이 강력한 프로젝트이며 HTTP 헤더를 사용하여 모든 종류의 런타임 마법을 수행할 수 있습니다.

다른 팁

Nginx를 사용하여 백엔드 응용 프로그램을 프록시하고 백엔드가 자체 광고를 원한다면 Server: nginx가 포함하지 않은 헤더는 그것을 덮어 쓸 수 있습니다. server {…} 스탠자 및 세트 :

proxy_pass_header Server;

그것은 Nginx가 해당 헤더를 내버려두고 백엔드에 의해 설정된 값을 다시 작성하지 않도록 설득합니다.

마지막 업데이트는 얼마 전 였으므로 여기 우분투에서 저에게 효과가있는 것이 있습니다.

sudo apt-get update
sudo apt-get install nginx-extras

그런 다음 다음 두 줄을 추가하십시오 http 섹션 nginx.conf, 일반적으로 /etc/nginx/nginx.conf에 위치합니다.

sudo nano /etc/nginx/nginx.conf
server_tokens off; # removed pound sign
more_set_headers 'Server: Eff_You_Script_Kiddies!';

또한 Nginx를 다시 시작하는 것을 잊지 마십시오 sudo service nginx restart.

간단하고 /etc/nginx/nginx.conf를 편집하고 댓글을 제거하십시오

#server_tokens off;

검색 http 부분.

매우 간단합니다. 서버 섹션 에이 줄을 추가하십시오.

server_tokens off;
more_set_headers 'Server: My Very Own Server';

특수 모듈이 있습니다. http://wiki.nginx.org/nginxhttpheadersmoremodule

이 모듈을 사용하면 지정한 출력 또는 입력 헤더를 추가, 설정 또는 지우실 수 있습니다.

이것은 표준의 향상된 버전입니다 헤더 모듈은 "내장 헤더"와 같은 더 많은 유틸리티를 제공하기 때문에 모듈 Content-Type, Content-Length, 그리고 Server.

또한 옵션 HTTP 상태 코드 기준을 사용하여 -s 옵션 및 선택적 컨텐츠 유형 기준을 사용합니다 -t 옵션으로 출력 헤더를 수정하는 동안 옵션 more_set_headers 그리고 more_clear_headers 지침 ...

Nginx 엑스트라를 설치하십시오

sudo apt-get update
sudo apt-get install nginx-extras

Nginx.conf (HTTP 섹션 아래)에서 두 줄을 따라 두 줄을 추가하여 서버 세부 정보를 응답에서 제거 할 수 있습니다.

more_clear_headers Server;
server_tokens off;

헤더를 5자 이하의 다른 문자열로 변경해도 괜찮다면 간단히 바이너리를 패치하면 됩니다.

sed -i 's/nginx\r/thing\r/' `which nginx`

솔루션으로서 몇 가지 주목할만한 이점이 있습니다.즉, 배포판에서 nginx-extras를 사용할 수 없는 경우에도 패키지 관리자가 nginx 버전 관리를 처리하도록 허용할 수 있으므로(소스에서 컴파일하지 않음) 추가 사항에 대해 걱정할 필요가 없습니다. nginx-extras와 같은 코드가 취약합니다.

물론 옵션도 설정하고 싶을 것입니다. server_tokens off, 버전 번호를 숨기거나 해당 형식 문자열도 패치합니다.

"5글자 이하"라고 말한 이유는 물론 다음과 같이 언제든지 바꿀 수 있기 때문입니다.

nginx \0

~와 함께

밥 \0 \0

마지막 2바이트는 변경하지 않고 그대로 둡니다.

실제로 5자보다 많은 문자를 원하는 경우 server_tokens를 켜진 상태로 두고 (약간 더 긴) 형식 문자열을 바꾸는 것이 좋습니다. 캐리지 리턴).

...위의 내용 중 어느 것도 이해되지 않거나 이전에 바이너리를 패치한 적이 없다면 이 접근 방식을 피하는 것이 좋습니다.

유일한 방법은 src/http/ngx_http_header_filter_module.c 파일을 수정하는 것입니다. 48 행의 Nginx를 다른 문자열로 변경했습니다.

nginx 구성 파일에서 할 수있는 일은 설정하는 것입니다. Server_tokens 꺼짐. 이렇게하면 Nginx가 버전 번호를 인쇄하지 못하게됩니다.

물건을 확인하려면 시도하십시오 컬 -I http://vurbu.com/ | Grep 서버

돌아와야합니다

Server: Hai

Parthian Shot의 답변을 읽은 후에는 /usr/sbin/nginx 이진 파일. 그런 다음 파일 에이 세 줄이 포함되어 있음을 알았습니다.

Server: nginx/1.12.2
Server: nginx/1.12.2
Server: nginx

기본적으로 첫 번째는 두 가지를 의미합니다 server_tokens on; 지침 (서버 버전 포함). 그런 다음 이진 파일 내의 해당 라인과 일치하도록 검색 기준을 변경합니다.

sed -i 's/Server: nginx/Server: thing/' `which nginx`

더 멀리 파고 나면 Nginx가 생성 한 오류 메시지 도이 파일에 포함되어 있음을 알았습니다.

<hr><center>nginx</center>

버전이없는 3 개가 있으며 그 중 하나는 버전을 포함했습니다. 따라서 오류 메시지 내에서 nginx 문자열을 바꾸기 위해 다음 명령을 실행합니다.

sed -i 's/center>nginx/center>thing/' `which nginx`

Nginx에 따르면 선적 서류 비치 사용자 지정 값 또는 제외를 지원합니다.

Syntax: server_tokens on | off | build | string;

그러나 슬프게도 a 상업적 가입:

또한 버전 1.9.13부터 시작하는 상용 가입의 일부로 오류 페이지의 서명 및 "서버"응답 헤더 필드 값을 변수와 함께 문자열을 사용하여 명시 적으로 설정할 수 있습니다. 빈 문자열은 "서버"필드의 배출을 비활성화합니다.

나는 게시물이 다소 낡았다는 것을 알고 있지만, Nginx를 소스에서 컴파일하지 않고 데비안 기반 분포에 대한 솔루션을 쉽게 찾았습니다.

먼저 Nginx-Extras 패키지를 설치하십시오

sudo apt nginx-extras를 설치하십시오

그런 다음 nginx.conf를 편집하고 서버 블록 내부에 다음 줄을 추가하여 Nginx HTTP 헤더를 더 많이로드하십시오.

load_module 모듈/ngx_http_headers_more_filter_module.so;

완료되면 more_set_headers 및 more_clear_headers 지시문 모두에 액세스 할 수 있습니다.

응답에서 서버 헤더 값에 대해 묻고 있습니까? Add_header 지시문으로 변경해 볼 수 있지만 작동하는지 확실하지 않습니다. http://wiki.codemongers.com/nginxhttpheadersmodule

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top