默认情况下,nginx代理的服务会把自己的版本信息给返回。
一些情况下,这点是比较危险的。低版本的nginx可能会有一些漏洞,换句话说,知道一台服务器使用的服务是nginx以及它的nginx版本,那么就可以直接查看该服务器的一些相关漏洞了。
目前link-nemo使用的也是nginx做了一些相应的代理操作。
如果需要隐藏版本号,很简单,只需要在配置中的http中添加server_tokens off
http {
...
server_tokens off;
...
}
这样nginx返回的信息中就不会有版本号了。
其他一些基于nginx的web容器,类似于openresty,会默认把nginx的标志也给去除。
这里查了下,nginx大致有两种方案可以达到相应的目的:
1、使用headers-more-nginx-module模块:
项目地址是:https://github.com/openresty/headers-more-nginx-module
vim src/http/ngx_http_header_filter_module.c
找到
static char ngx_http_server_string[] = "Server: nginx" CRLF;
static char ngx_http_server_full_string[] = "Server: " NGINX_VER CRLF;
举个栗子,可以修改为:
static char ngx_http_server_string[] = "Server: X-Nemo-Web" CRLF;
static char ngx_http_server_full_string[] = "Server:X-Nemo-Web " CRLF;
然后重新编译,重载服务后即可。
来两张网络上的图对比修改前后:
前:
后:
可以看到Server信息已经被修改了。