Linux 如何更改(隐藏)Nginx服务器签名?

Linux 如何更改(隐藏)Nginx服务器签名?,linux,nginx,centos,Linux,Nginx,Centos,我可以使用设置为off的server_tokens选项隐藏Nginx版本。但无法更改Nginx服务器签名 我做的步骤 1.)将源文件(src/http/ngx_http_header_filter_module.c)中的Nginx服务器名称更改为“我的服务器”。然后,编译nginx。但当我加载url时,它不起作用。奇怪的是,当我使用curl命令时,我可以看到我更新的签名。但这并不会在浏览器中更新 2.)所以我尝试了第三方模块(更多nginx模块)。这也不管用。通过Curl获取更新的名称。但不是在

我可以使用设置为off的server_tokens选项隐藏Nginx版本。但无法更改Nginx服务器签名

我做的步骤

1.)将源文件(src/http/ngx_http_header_filter_module.c)中的Nginx服务器名称更改为“我的服务器”。然后,编译nginx。但当我加载url时,它不起作用。奇怪的是,当我使用curl命令时,我可以看到我更新的签名。但这并不会在浏览器中更新

2.)所以我尝试了第三方模块(更多nginx模块)。这也不管用。通过Curl获取更新的名称。但不是在浏览器中

  • 安装HttpHeadersMoreModel
  • 使用
    more\u set\u headers
    指令更改它
  • 重新加载Nginx以生效

    隐藏nginx版本信息。 服务器_令牌关闭

    更改服务器名称。 更多设置标题“Server:MyServerName”


  • 转到nginx conf并关闭服务器\u令牌

    /etc/nginx/nginx.conf
    
    server_tokens off;
    

    如果你在ubuntu工作,那么

  • 首次安装nginx附加组件

    sudo apt-get install nginx-extras
    
  • 转到
    /etc/nginx/nginx.conf
    并在
    http
    下添加:

    http {
        more_set_headers "Server: Your_New_Server_Name";
        server_tokens off; 
    }
    
  • 重新启动nginx

    sudo service nginx restart
    

  • 如果使用ModSecurity v2.0-v2.9,那么在.conf文件中可以使用

    SecServerSignature SomeName
    

    ModSecurity v3 SecServerSignature已被弃用,但我不知道他们是否用其他东西替换了它。

    您可以在Nginx配置中使用它

    proxy_pass_header Server;
    

    这就是你对nginx开发者说“谢谢”的方式吗?也许你的浏览器只是缓存了标题?在当前浏览器中尝试其他浏览器或Ctrl-F5/Ctrl-Rone@folibis,是的,我在不同的浏览器上进行了检查。但仍然是一样的:(@folibis是的,我已经将Nginx设置为apache LB的反向代理。我需要在其他地方进行更改吗?@VBart这是一种通过尽可能少地泄漏信息来提高安全性的小方法。在通过设计确保其尽可能安全后,通过模糊实现安全性是一种不错的做法(也就是说,它的补丁和配置都很好)。已经尝试过了,并在我的第二点上解释了相同的问题。有没有其他方法来更改它。您使用的是什么版本?它至少需要v0.7.44。@KMG我在使用“更多集头”时遇到了同样的问题。事实上,它在“curl”中工作表明它起作用了。原来浏览器正在缓存请求。一旦我解决了这个问题,问题就解决了。此外,您应该提到在哪里添加配置选项(例如,到
    http
    server
    location
    )你能再详细一点吗?如果你是反向代理某个后端服务器,这是可行的。还有其他的情况吗?2020-01-18:使用
    sudo添加apt存储库ppa:nginx/stable
    提供
    nginx/1.16.1
    而不是
    nginx/1.14.0
    Ubuntu 18.04
    上提供
    nginx/1.16.1
    而不是