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