欢迎访问LCE的博客,为你分享产品、技术、设计方面的作品实践和心得。

隐藏nginx版本号的两种方法

PHP lce 2周前 (11-05) 29次浏览 已收录 0个评论 扫描二维码

一般情况下,我们要知道一个网站用了哪种环境,只需要简单通过浏览器的 F12 控制台,查看 http 的响应头信息即可看到。

比如下面这个:

隐藏nginx版本号的两种方法

有时候在网站显示 403/404/502 等错误的时候,甚至还会暴露具体的版本号。

对于网站安全而言,隐藏 web 服务器的版本号是比较重要的。所以下面我们讲一下怎么隐藏 nginx 的版本信息。也就是说,让一般人很难清楚自己网站用的哪种 web 服务器。

第一种方法是修改 nginx 的配置文件,即 nginx.conf

在里面找到 server_tokens 这一行,如果是 On,则修改为 Off 即可。这种方法最简单,适用于一般小白或不喜欢折腾的人。

第二种方法则是直接修改 nginx 源码,达到隐藏版本甚至采用假信息迷惑别人的目的。比较适合爱折腾的技术狂们。

首先是下载 nginx 源码,下载前最好是通过 nginx -V 命令查看下之前 nginx 的相关编译信息,下载正确的版本号。

解压源码包,然后修改 src/http/ngx_http_header_filter_module.c 这个文件,大概是 49-50 行:

隐藏nginx版本号的两种方法

将 nginx 修改成你希望的名字,比如 lce.cc 之类。

接下来修改 src/core/nginx.h 这个文件,这三行都可以修改:

隐藏nginx版本号的两种方法

最后修改 src/http/ngx_http_special_response.c 这个文件大概 36 行:

隐藏nginx版本号的两种方法

修改完成后,按照之前 nginx -V 查看的编译参数重新编译,即./configure+编译参数,再 make,备份原 nginx 二进制文件之后 make install,再nginx -s reload(正确的方法是/etc/init.d/nginx restart)一下即可。

比如像我在修改源码完成后,会先:

./configure –user=www –group=www –prefix=/usr/local/nginx –with-http_stub_status_module –with-http_ssl_module –with-http_v2_module –with-http_gzip_static_module –with-http_sub_module –with-stream –with-stream_ssl_module –with-openssl=/root/lnmp1.6/src/openssl-1.1.1d –with-openssl-opt=’enable-weak-ssl-ciphers’ –with-ld-opt=-Wl,-rpath,/usr/local/luajit/lib –add-module=/root/lnmp1.6/src/lua-nginx-module-0.10.14 –add-module=/root/lnmp1.6/src/ngx_devel_kit-0.3.1rc1 –add-module=/root/lnmp1.6/src/ngx_cache_purge-2.3

再 make

再 make install

再/etc/init.d/nginx restart,即可。

这时候,可以通过 F12 控制台查看修改后的版本信息。

隐藏nginx版本号的两种方法隐藏nginx版本号的两种方法

完成以上三步修改后,不管是通过浏览器 F12 控制台还是其他方式,对方都很难知道你真正采用了什么样的 web 服务器环境。


LCE的博客 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:隐藏nginx版本号的两种方法
喜欢 (0)
[liuchn@vip.qq.com]
分享 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址