0
点赞
收藏
分享

微信扫一扫

nginx设置隐藏版本号

书坊尚 2024-11-24 阅读 13

1. header_filter_by_lua 'ngx.header["server"] = ""' 的作用

当你使用 header_filter_by_lua 来设置 ngx.header["Server"] 为一个空字符串时,它只会修改响应头中的 Server 字段。具体来说,它仅仅清除了响应头中的 Server 字段,防止该字段在响应中显示。

示例

header_filter_by_lua 'ngx.header["Server"] = ""';

  • 作用:清除 Server 响应头,防止 Server 信息(如版本号)泄露。
  • 限制:它只会影响响应头,而不会影响响应体中的任何内容。如果错误页面(例如 404 页面)包含 Server 信息(如 Nginx 的版本号),那么这些信息仍然会被渲染和显示。

2. server_tokens off; 的作用

server_tokens off; 是一个 Nginx 原生的配置指令,它不仅影响响应头中的 Server 字段,还影响响应体的内容,尤其是在生成错误页面时。启用 server_tokens off; 会完全禁止 Nginx 在响应中暴露版本信息,包括:

  • 响应头中的 Server 字段:它会将 Server 字段的值从 nginx/1.18.0 变为 nginx 或完全为空,具体取决于配置。
  • 错误页面:如果返回错误(例如 404 或 500),Nginx 默认会在错误页面中包含版本信息。启用 server_tokens off; 后,错误页面也不会显示 Nginx 的版本号。

示例

server_tokens off;

  • 作用:禁止显示 Server 头部中的版本号,同时还会影响 错误页面 的显示,不再包含版本号。
  • 影响范围:它不仅影响响应头,还会影响 Nginx 错误页面 的内容,避免泄露版本信息。

3.主要区别:

特性

header_filter_by_lua 'ngx.header["Server"] = ""'

server_tokens off;

修改响应头

只修改响应头中的 Server 字段

修改响应头中的 Server 字段(去除版本号)

修改响应体

不修改响应体内容

还会修改错误页面内容,隐藏版本信息

影响范围

只影响响应头

影响响应头和 Nginx 错误页面的内容

适用场景

需要灵活修改某些特定头部字段时使用

全面关闭 Nginx 版本信息的暴露,增强安全性

4.举例说明:

4.1 配置 header_filter_by_lua

server {
    listen 80;
    server_name example.com;

    location / {
        header_filter_by_lua '
            ngx.header["Server"] = "";
        ';
    }
}

  • 效果:请求响应头中的 Server 字段将被清空,但如果返回错误页面,错误页面中仍可能包含 Nginx 版本信息。
4.2 配置 server_tokens off;

server {
    listen 80;
    server_name example.com;

    server_tokens off;

    location / {
        # 正常配置
    }
}

  • 效果:响应头中的 Server 字段将显示为 nginx(或完全没有 Server 字段),而且即使是错误页面(如 404、500 等),也不会显示版本信息。

5.总结:

  • header_filter_by_lua 'ngx.header["Server"] = ""':只修改响应头中的 Server 字段,不影响错误页面。
  • server_tokens off;:不仅修改响应头中的 Server 字段,还会影响 Nginx 错误页面内容,完全隐藏 Nginx 版本信息,从而提高安全性。
举报

相关推荐

0 条评论