NGINX 隐藏版本号和Server显示

NGINX 隐藏版本号和Server显示

前言

在nginx优化中我们提到了为了web服务器的安全隐藏nginx版本号,从而防止被黑客利用web服务器版本号的漏洞做针对性攻击。但是并没有做隐藏server显示的操作,今天补上一篇。另外说明一下几个注意事项。

场景

1.如果仅仅是隐藏版本号,直接在http字段中加入 server_tokens off ;  即可。(一般隐藏版本号就可以了)

2.如果还想要隐藏server 则需要修改 nginx.h文件,然后重新编译。将新的nginx文件拷贝过去

注意:如果你想隐藏server和版本号,就不能配置server_tokens off 了,否则修改的nginx.h不生效。可看做优先级问题。正确的做法是:不配server_tokens off  ,直接在nginx.h中隐藏版本号和server即可。 

部署

  • 进入nginx 源码文件包里编辑 vim ./src/core/nginx.h

修改红色部分,这里我将版本号填为空,server自定义了名字。

/*
* Copyright (C) Igor Sysoev
* Copyright (C) Nginx, Inc.
*/

#ifndef _NGINX_H_INCLUDED_
#define _NGINX_H_INCLUDED_

#define nginx_version 1015007
#define NGINX_VERSION “”
#define NGINX_VER “wangtingwei” NGINX_VERSION

#ifdef NGX_BUILD
#define NGINX_VER_BUILD NGINX_VER ” (” NGX_BUILD “)”
#else
#define NGINX_VER_BUILD NGINX_VER
#endif

#define NGINX_VAR “NGINX”
#define NGX_OLDPID_EXT “.oldbin”

#endif /* _NGINX_H_INCLUDED_ */

  • 保存后重新 configure 编译 make 即可(不必make imstall)
  • 将旧的nginx 文件备份,将新的nginx 文件拷贝过去。

mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak

cp ./objs/nginx /usr/local/nginx/sbin/

  • 然后开启新的master进程和work进程来接受请求,再通过kill -WINCH pid (旧master pid)终止旧的master进程。

注意:nginx -s reload 不能实现。必须重启或者用上述平滑方式进行。

验证

[root@cl-29-test nginx-1.15.7]# !curl
curl -I https://wangtingwei.info
HTTP/1.1 200 OK
Server: wangtingwei
Date: Wed, 27 Feb 2019 04:55:49 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
X-Powered-By: PHP/7.2.12
Link: <https://wangtingwei.info/index.php?rest_route=/>; rel=”https://api.w.org/”
Strict-Transport-Security: max-age=15768000

 

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注

Loading...