通过yum安装的nginx通过配置文件,只能隐藏掉nginx的版本号,不能隐藏服务名称。
要修改服务名称,需要通过编译安装的方式,在编译安装前需要修改nginx源码。
这个有好多个地方需要修改的,因为有些状态码他响应的头写法不一样,有的错误 ,要打印一个字符串到网页上 http/ngx_http_special_response.c这个文件里有一行
ngx_http_header_filter_module.c 这个文件的以下代码static u_char ngx_http_server_string[] = "Server: nginx" CRLF;
static u_char ngx_http_server_full_string[] = "Server: " NGINX_VER CRLF;
#这里的NGINX_VER常量就是core/nginx.h库中的NGINX_VER常量,所以nginx.h库里的NGINX_VER常量是要改的。
修改core/nginx.h这个库
代码如下#define nginx_version 1014002
#define NGINX_VERSION "1.14.2"
#define NGINX_VER "nginx/" NGINX_VERSION
#主要就是NGINX_VER常量,这个常量定义了nginx/1.14.2 这样的字符串。所以把nginx改掉你自己的,再把版本号去掉
把上面的这三个文件改完,再编译安装就能隐藏掉nginx的名称以及版本号了。