目录
修改 HTTP 头信息中的connection 字段,防止回显具体版本号
nginx隐藏版本号主要是出于安全考虑,某些nginx漏洞只存在特定的版本,如果攻击者知道了服务器使用的确切Nginx版本,他们可能会尝试利用这些已知漏洞进行攻击。因此,隐藏版本号可以提高服务器的安全性,使攻击者难以通过版本信息推断出服务器可能存在的安全漏洞。
如果是已经安装则只能在nginx.conf配置文件中(http)添加隐藏版本号通常可以通过简单地修改Nginx的配置文件来实现。在Nginx的配置文件,http中添加server_tokens off;如果原本就有只需要将on改为off即可。指令可以关闭服务器发送包含版本信息的响应头,从而隐藏版本号。在http中是隐藏所有的server版本。
也可以在某个server中添加只隐藏server的。
vim /usr/local/nginx/conf/nginx.conf
vim /etc/nginx/conf/nginx.conf
- http {
- server_tokens off; # 在http块中关闭所有server的tokens
-
- server {
- listen 80;
- server_name example.com;
-
- # 可以在这里再次关闭,只针对这个server
- # server_tokens off;
-
- location / {
- root /usr/share/nginx/html;
- index index.html index.htm;
- }
- }
- }
解压之后进入到nginx包下找到的src目录的core目录中的nginx.h文件
vim /usr/src/nginx*/src/core/nginx.h

(nginx1.26.1版本)不同版本可能会有不同。
不要去掉#号。
- #define NGINX_VERSION "1.26.1"
- #此行代表版本号1.26.1
- #define NGINX_VER "nginx/" NGINX_VERSION
- #此行代表使用使用的软件是nginx
拓展:通用 http 头 ,通用头包含请求和响应消息都支持的头,通用头包含 Cache-Control、 Connection 、Date 、Pragma 、Transfer-Encoding 、Upgrade 、Via。对通用头的扩展要求通讯双 方都支持此扩展,如果存在不支持的通用头,一般将会作为实体头处理。那么也就是说有部分设备、或者是软件,能获取到 connection,部分不能,为了安全要做到所有的有可能的漏洞彻底隐藏。
修改nginx目录中的src目录、http目录、ngx_header_fileter_module.c文件
vim src/http/ngx_http_header_filter_module.c
(nginx1.26.1版本)不同版本可能会有不同。
- static u_char ngx_http_server_string[] = "Server: nginx" CRLF;
- #定义http错误码的返回。
- 例如:static u_char ngx_http_server_string[] = "Server: jingyu" CRLF;
修改nginx目录中的src目录、http目录、ngx_http_special_response.c 文件
vim src/http/ngx_http_special_response.c
(nginx1.26.1版本)不同版本可能会有不同。

- static u_char ngx_http_error_tail[] =
- "
nginx " CRLF - "
" CRLF