MENU

修改nginx的header头伪装服务器

2016 年 10 月 17 日 • 杂乱文章

为什么要这样干?

对安全或者装逼都是非常实用的。

实现方法

以下操作需要在nginx编译之前完成,如果已经编译安装完nginx,则需要重写编译安装。如果你是使用yum方式或是RPM方式安装的nginx,这种方法可能不适合你,因为我没试过,你如果心很大,可以试试。

1.修改src/core/nginx.h(Nginx内部名称的)
[root@blog ~]# cd /usr/local/src/nginx-1.10.3/
[root@blog nginx-1.10.3]# vim src/core/nginx.h 
#define NGINX_VERSION      "1.10.3"
#define NGINX_VER          "nginx/" NGINX_VERSION
说明一下,NGINX_VERSION是版本号,NGINX_VER是名称,版本号不要可以删掉,不要删了双引号 NGINX_VER写自己想写的东西。改完之后保存退出
2.修改src/http/ngx_http_header_filter_module.c(HTTP ResponseHeader)
[root@blog nginx-1.10.3]# vim src/http/ngx_http_header_filter_module.c
static char ngx_http_server_string[] = "Server: nginx " CRLF;
3.修改src/http/ngx_http_special_response.c(修改错误页的底部Footer)
[root@blog nginx-1.10.3]# vim src/http/ngx_http_special_response.c
static u_char ngx_http_error_tail[] =
"<hr><center>nginx</center>" CRLF
"</body>" CRLF
"</html>" CRLF

现在外部已经无法知晓我们服务器的名称,已经达到目的,下一步就是重新编译nginx

平滑升级nginx

1.查询现有nginx的编译参数,并在源码里重新编译,建议在做这一步之前做一下备份。
[root@blog ~]# /usr/local/nginx/sbin/nginx -V

2.进入到源码,复制之前的编译参数,重新编译
[root@blog ~]# cd /usr/local/src/nginx-1.10.3/
[root@blog nginx-1.10.3]# ./configure --prefix=/usr/local/nginx --without-http_memcached_module --user=www --group=www --with-http_ssl_module --with-http_gzip_static_module
make

直接执行make install就好,看下图。

20170920011309.png

下面是最保险的升级办法。

[root@blog nginx-1.10.3]# mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old        #重命名旧版执行文件
[root@blog nginx-1.10.3]# cp objs/nginx /usr/local/nginx/sbin/                                #复制新生成的文件
[root@blog nginx-1.10.3]# make upgrade                             #最后执行升级命令

如果执行make upgrade出现抛错,注意不是因为配置文件错误抛错,请执行以下命令。

[root@rj-bai ~]# kill -9 `ps aux | grep nginx | grep -v grep |awk {'print $2'}` && /usr/local/nginx/sbin/nginx

最后看看结果吧。

可能会出现的问题

改完之后编译失败,造成的原因可能是在修改过程中改错了某些地方。删掉源码重写解压,再次修改。不显示版本号在配置文件里面加上以下参数重启nginx

server_tokens off;
最后编辑于: 2018 年 12 月 10 日
返回文章列表 文章二维码 打赏
本页链接的二维码
打赏二维码