隱藏或者修改nginx信息

細節決定成敗,服務器的安全也是這樣!隱藏或者修改nginx的信息,不是什麼炫酷的技能,只是nginx設置中的一個小小的細節。php

Http中的Nginx版本信息

查看http請求的response裏面的header咱們會發現有server這個參數,它表示服務端使用的是什麼web服務器。nginx

例如web

   新浪網:shell

Server: nginx

  開源中國:segmentfault

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的版本號是徹底不可見的~app

經過上圖咱們能夠看到雖然http返回的header裏面已經沒有了版本號,可是php裏面仍是能夠獲取到nginx的版本號的,若是要對PHP也隱藏掉版本號就須要修改fastcgi.conf這個文件了:網站

去掉後面的 /$nginx_version 或者 直接註釋掉這一行!spa

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,只是不顯示版本號!

相關文章
相關標籤/搜索