一文看懂如何隐藏或者修改nginx信息

Http中的Nginx版本信息

查看http请求的response里面的header我们会发现有server这个参数,它表示服务端使用的是什么web服务器。

例如

新浪网:

 
Server: nginx 

开源中国:

 
Server: Tengine 

segmentfault甚至都没有返回server!

很多网站不止返回了nginx而且还带了版本号,而像版本号这种东西完全没必要暴露给用户,我们可以通过设置server_tokens off隐藏掉版本号:

 
http { include mime.types; default_type application/octet-stream; #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' # '$status $body_bytes_sent "$http_referer" ' # '"$http_user_agent" "$http_x_forwarded_for"'; server_tokens off; ##隐藏版本号 

PHP中的Nginx版本信息

即使把server_tokens设为了off,也并不代表nginx的版本号是完全不可见的~

 

通过上图我们可以看到虽然http返回的header里面已经没有了版本号,但是php里面还是可以获取到nginx的版本号的,如果要对PHP也隐藏掉版本号就需要修改fastcgi.conf这个文件了:

去掉后面的 /$nginx_version 或者 直接注释掉这一行!

 
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version; 

修改或者隐藏Nginx信息

如果我希望nginx也不显示呢?或者修改nginx为Tengine呢?

这个时候就要修改nginx源码文件src/core/nginx.h,例如我把nginx修改问tengine:

 
/* * Copyright (C) Igor Sysoev * Copyright (C) Nginx, Inc. */#ifndef _NGINX_H_INCLUDED_#define _NGINX_H_INCLUDED_#define nginx_version 1009005/*#define NGINX_VERSION "1.9.5"#define NGINX_VER "nginx/" NGINX_VERSION*/#define NGINX_VERSION "2.1.1"#define NGINX_VER "Tengine/" 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_ */ 

也可以把NGINX_VER 赋值为空,这样Http 返回的header里面的server也为空了!

需要注意的是,如果server_tokens设置为off,即使源码NGINX_VER 赋值为空或者改成其他值,返回的server还是nginx,只是不显示版本号!

.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值