当前位置: > Linux服务器 > nginx >

隐藏或者修改nginx信息

时间:2015-10-06 08:43来源:linux.it.net.cn 作者:IT

细节决定成败,服务器的安全也是这样!隐藏或者修改nginx的信息,不是什么炫酷的技能,只是nginx设置中的一个小小的细节。

Http中的Nginx版本信息

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

例如

   新浪网:

 
1
Server: nginx

  开源中国:

 
1
Server: Tengine

segmentfault甚至都没有返回server!

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

 
1
2
3
4
5
6
7
8
9
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 或者 直接注释掉这一行!

 
1
fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;

修改或者隐藏Nginx信息

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

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

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
/*
 * 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,只是不显示版本号!

 
(责任编辑:IT)
------分隔线----------------------------
栏目列表
推荐内容