在Linux和Unix中如何隐藏Nginx版本号

时间:2019-11-20 08:53:32  来源:igfitidea点击:

在Linux或Unix服务器上如何隐藏或删除Nginx版本。

查看Nginx当前版本

Nginx将在错误页面和服务器响应头中显示版本。

使用下面命令查看:

$ curl -I https://your-domain
$ curl -I https://www.theitroad.com

输出示例:

HTTP/2 200 
server: nginx/1.17.10 (Ubuntu)
date: Tue, 23 Jun 2020 09:36:49 GMT
content-type: text/html; charset=UTF-8
strict-transport-security: max-age=15768000
x-whome: l-ncbz01-mg-wg

或者在浏览器中查看:

按F12打开开发者控制台->按F5刷新页面->点击【Network】,在Name中选择页面,在右边的Headers中可以看到【Response Headers】 信息。其中Server就是nginx的版本信息。

使用server_tokens指令隐藏Nginx版本

将server_tokens设置为off可以隐藏Nginx服务器版本。

server_tokens的设置

server_tokens可以设置的值有

server_tokens on | off | build | string;

在Linux,* BSD和Unix上,默认设置如下:

server_tokens on;

修改nginx.conf文件:

$ sudo vim /etc/nginx/nginx.conf

在http,server或者location中设置server_tokens。

例如,添加到http:

server_tokens off;

配置看起来这样:

http {
        ## Basic Settings ##
        charset utf-8;
        sendfile on;
        tcp_nopush on;
        tcp_nodelay on;
        log_not_found off;
        keepalive_timeout 65;
        types_hash_max_size 2048;
        client_max_body_size 16M;
        include /etc/nginx/mime.types;
        default_type application/octet-stream;
        ## Hide Nginx version ##
        server_tokens   off;
        ## Security headers for Nginx ## 
        add_header Strict-Transport-Security "max-age=15768000" always;
        add_header X-Content-Type-Options "nosniff" always;
        add_header X-Frame-Options "SAMEORIGIN" always;
        add_header X-Xss-Protection "1; mode=block" always;
        add_header Referrer-Policy  strict-origin-when-cross-origin;
        add_header Feature-policy "accelerometer 'none'; camera 'none'; geolocation 'none'; gyroscope 'none'; magnetometer 'none'; microphone 'none'; payment 'none'; usb 'none'";
        add_header Content-Security-Policy   "default-src 'self' http: https: data: blob: 'unsafe-inline'" always;
        ## SSL Settings ##
        ssl_protocols TLSv1.3;
        access_log /var/log/nginx/access.log;
        error_log /var/log/nginx/error.log;
        ## Virtual Host Configs ##
        include /etc/nginx/conf.d/*.conf;
        include /etc/nginx/sites-enabled/*;
}

重新加载Nginx配置,使设置生效:

$ sudo nginx -t
$ sudo nginx -s reload

检查Nginx版本是否已经被隐藏

使用curl命令,如下所示:

curl -I https://your-domain-name-here
curl -I https://www.theitroad.com

现在版本号已经被隐藏:

HTTP/2 200 
server: nginx
date: Tue, 23 Jun 2020 09:43:17 GMT
content-type: text/html; charset=UTF-8
strict-transport-security: max-age=15768000