微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

一文看懂如何隐藏或者修改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的版本号是完全不可见的~

一文看懂如何隐藏或者修改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_HINCLUDED#define _Nginx_HINCLUDED#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_HINCLUDED */
    也可以把Nginx_VER 赋值为空,这样Http 返回的header里面的server也为空了!

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐