
1、隐藏nginx的版本号,在nginx.conf配置文件的http模块下添加如下配置:
server_tokens off;


2、彻底隐藏Server响应头
可以采用重新编译nginx然后替换nginx二进制文件的方法来实现
①查看nginx的版本
nginx -v
比如返回的是,nginx version: nginx/1.10.3,那此时我的nginx版本就是1.10.3
②然后在官网找到对应的nginx的版本号下载,并解压:https://nginx.org/download/
wget https://nginx.org/download/nginx-1.10.3.tar.gz tar -zxvf nginx-1.10.3.tar.gz
③下载headers-more-nginx-module包,然后解压
wget https://github.com/openresty/headers-more-nginx-module/archive/refs/heads/master.zip unzip master.zip
④查看原nginx安装参数命令,这与查看版本号的命令不一样,查看版本号是小写的“v”,查看安装命令参数是大小的“V”
nginx -V
⑤重新编译nginx
cd nginx-1.10.3 #进入nginx-1.10.3.tar.gz源码包解压后的目录 ./configure [原nginx的安装参数] --add-module=/path/to/headers-more-nginx-module
原nginx的安装参数:nginx -V命令返回数据configure arguments: 之后的内容
/path/to/headers-more-nginx-module:第③步中unzip master.zip 解压后的目录路径
执行./configure 命令后如果有报错,大部分情况是缺少某些依赖,根据提示逐一安装好后,再执行一次前面执行的./configure 命令,成功之后会显示nginx二进制文件所在位置

⑥make,重新编译执行结束没报错后再次执行make,只要执行make就行了
make
./configure 编译成功后会在当前目录下生成一个objs目录,当make执行完后会在objs目录下生成nginx的二进制文件
⑦nginx二进制文件替换,在替换nginx二进制文件前先停止nginx服务
systemctl stop nginx ls -l /usr/sbin/|grep nginx #查看nginx二进制文件的权限 cp /usr/sbin/nginx /usr/sbin/nginx.bak #担心出什么问题的话可以先备份原来的nginx二进制文件 cp objs/nginx /usr/sbin/ #把objs目录下新生成的nginx二进制文件拷贝到/usr/sbin/目录下,替换掉原来的nginx二进制文件 ls -l /usr/sbin/|grep nginx #再次查看nginx二进制文件替换后的权限,如果与替换前不一致,需修改新nginx二进制文件的权限,修改为与原来一致
⑧添加more_clear_headers 'Server',如果是希望nginx下的所有站点都隐藏Server头,那就在nginx.conf文件的http模块下添加more_clear_headers 'Server';
如果只是希望某个站点隐藏Server头,就在这个站点的配置文件的server模块下添加more_clear_headers 'Server';
#所有站点都隐藏Server头 vi /etc/nginx/nginx.conf #在http模块中引入配置文件前的任意位置添加 more_clear_headers 'Server'; #单个站点隐藏Server头 vi /etc/nginx/conf/站点配置文件 #在server模块,server_name下添加 more_clear_headers 'Server';
⑨启动nginx服务,并验证
nginx -t #检查配置是否有问题 systemctl start nginx #启动nginx服务
此时访问请求响应头中已经没有Server头了

