Как изменить (скрыть) подпись сервера Nginx?

Я могу скрыть версию Nginx, используя параметр server_tokens, который отключен. Но не удалось изменить подпись сервера Nginx.

Шаги, которые я сделал,

1.) Измените имя сервера Nginx в исходном файле (src/http/ngx_http_header_filter_module.c) на "Мой сервер". После этого скомпилировали nginx. Но он не работает, когда я загружаю URL. Странно здесь, я могу видеть мою обновленную Подпись, когда я использую команду curl. Но это не обновляется в браузере.

2.) Поэтому я попробовал сторонний модуль (headers-more-nginx-module). Это тоже не работает. Получение обновленного имени через Curl. Но не в браузере.

Ответ 1

Если вы работаете в ubuntu, тогда

  1. Сначала установите nginx-extras

    sudo apt-get install nginx-extras
    
  2. Перейдите в /etc/nginx/nginx.conf и в разделе http add:

    http {
        more_set_headers "Server: Your_New_Server_Name";
        server_tokens off; 
    }
    
  3. Перезапустить nginx

    sudo service nginx restart
    

Ответ 2

  1. Установить HttpHeadersMoreModule - http://wiki.nginx.org/HttpHeadersMoreModule
  2. Измените его, используя директиву more_set_headers.
  3. Перезагрузите Nginx, чтобы вступить в силу.

    Скрыть информацию о версии nginx.

    server_tokens off;

    Измените имя сервера.

    more_set_headers "Сервер: MyServerName";

Ответ 3

Перейдите в nginx conf и отключите server_tokens.

/etc/nginx/nginx.conf

server_tokens off;

Ответ 4

Если вы используете ModSecurity v2.0 - v2.9, то в файле.conf вы можете использовать

SecServerSignature SomeName

ModSecurity v3 SecServerSignature устарел, но я не знаю, заменили ли они что-то еще.