修改nginx源码,隐藏Response Headers的Server字段

通过yum安装的nginx通过配置文件,只能隐藏掉nginx的版本号,不能隐藏服务名称。

要修改服务名称,需要通过编译安装的方式,在编译安装前需要修改nginx源码。

这个有好多个地方需要修改的,因为有些状态码他响应的头写法不一样,有的错误 ,要打印一个字符串到网页上 http/ngx_http_special_response.c这个文件里有一行

<center>nginx</center>这个是写死的,这个字符串要改成你自己想要的或者改成常量,还有下面的文件:

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的名称以及版本号了。

Tags linux nginx

留言(0)

评论