Jak zmienić server string w nginx? 6 July 2010

Jeśli chciałbyś zmienić serwer string pokazywany przy każdym requeście, to może być how to dla ciebie ;)

nginx zazwyczaj odpowiada w taki sposób:

HTTP/1.1 200 OK
Date: Tue, 06 Jul 2010 08:14:19 GMT
Server: nginx/0.7.67

Aby się go pozbyć trzeba edytować źródło, a potem przekompilować. Pliki, które wymagają drobnych modyfikacji znajdują się w:

src/core/nginx.h
src/http/ngx_http_header_filter_module.c
conf/fastcgi_params

Jeśli nie chcecie ręcznie ich modyfikować, skorzystajcie ze skryptu który napisałem. Aby go użyć, wystarczy zapisać go jako script.sh, zmienić uprawnienia chmod u+x i wykonać: ./script.sh <katalog_ze_źródłem_nginx>. Rzućcie okiem, potestujcie i dajcie znać, jakby coś nie działało. Miłego!

#!/bin/bash

DIR=${1}
SERVERNAME=Paranoid
SERVERVERSION=0.4.2

if [[ $# < 1 ]]; then
    echo "`basename ${0}` {dir}"
    echo -e "\n\tExample: `basename ${0}` nginx-0.7.64"
    exit 1
fi

if [[ -e ${DIR}/src/core/nginx.h ]]; then
    sed -i "/#define NGINX_VERSION/ s,\"[^\"]*\",${SERVERVERSION}," ${DIR}/src/core/nginx.h
    sed -i "/#define NGINX_VER/ s,nginx,${SERVERNAME}," ${DIR}/src/core/nginx.h
    sed -i "/#define NGINX_VAR/ s,\"NGINX\",\"`echo ${SERVERNAME}| tr \"[a-z]\" \"[A-Z]\"`\"," ${DIR}/src/core/nginx.h
else
    echo "Can not find ${DIR}/src/core/nginx.h"
fi

if [[ -e ${DIR}/src/http/ngx_http_header_filter_module.c ]]; then
    sed -i "s,Server: nginx,Server: ${SERVERNAME}," ${DIR}/src/http/ngx_http_header_filter_module.c
else
    echo "Can not find ${DIR}/src/http/ngx_http_header_filter_module.c"
fi

if [[ -e ${DIR}/conf/fastcgi_params ]]; then
    sed -i "s,nginx/$nginx_version,${SERVERNAME}/$nginx_version," ${DIR}/conf/fastcgi_params
else
    echo "Can not find ${DIR}/conf/fastcgi_params"
fi

Tagi: , , ,

Zostaw odpowiedź