Как изменить заголовок сервера с помощью nginx?

есть возможность скрыть версию, чтобы она отображала только nginx, но есть ли способ скрыть это, чтобы она ничего не показывала или не меняла заголовок?

11 ответов


Как и Apache, это быстрое редактирование источника и перекомпиляция. От Calomel.org:

сервер: строка-это заголовок, который отправляется обратно клиенту сказать какой тип http-сервера вы работает и, возможно, какая версия. Эта строка используется в таких местах, как Алексия и Netcraft для сбора статистики о том, сколько и чего тип веб-сервера в прямом эфире на Интернет. Поддержать автора и статистика игрока Nginx we рекомендовать оставим эту нить как есть. Но, для безопасность вы можете не хотеть, чтобы люди знайте, что вы бежите, и вы можете изменить это в исходном коде. Редактировать исходный файл src/http/ngx_http_header_filter_module.c посмотрите на строки 48 и 49. Вы можете измените строку на что угодно хотеть.

## vi src/http/ngx_http_header_filter_module.c (lines 48 and 49)
static char ngx_http_server_string[] = "Server: MyDomain.com" CRLF;
static char ngx_http_server_full_string[] = "Server: MyDomain.com" CRLF;

март 2011 edit: реквизит для Флавия ниже, чтобы указать новый вариант, заменив стандарт Nginx HttpHeadersModule с ветвлением HttpHeadersMoreModule. Перекомпиляция стандартного модуля по-прежнему является быстрым решением и имеет смысл, если вы хотите использовать стандартный модуль и не будете часто менять строку сервера. Но если вы хотите больше, чем это, HttpHeadersMoreModule-сильный проект и позволяет вам делать все виды черной магии во время выполнения с вашими HTTP-заголовками.


Если вы используете nginx в качестве прокси серверного приложения и серверной рекламировать собственную Server: заголовок без перезаписи nginx, тогда вы можете войти внутрь своего server {…} строфы и установить:

proxy_pass_header Server;

это убедит nginx оставить этот заголовок в покое и не переписывать значение, установленное фоном.


последнее обновление было некоторое время назад, поэтому вот что сработало для меня на Ubuntu:

sudo apt-get update
sudo apt-get install nginx-extras

затем добавьте следующие две строки на nginx.conf, который обычно находится в /etc/nginx / nginx.conf:

sudo nano /etc/nginx/nginx.conf
server_tokens off; # removed pound sign
more_set_headers 'Server: Eff_You_Script_Kiddies!';

кроме того, не забудьте перезапустить nginx с sudo service nginx restart.


простой, редактировать /etc/nginx / nginx.conf и удалить комментарий

#server_tokens off;

искать http.


это очень просто: добавьте эти строки в раздел сервера:

server_tokens off;
more_set_headers 'Server: My Very Own Server';

есть специальный модуль:http://wiki.nginx.org/NginxHttpHeadersMoreModule

этот модуль позволяет добавить, установить или очистить любой выходной или входной заголовок, который вы укажете.

это расширенная версия стандарта заголовки модуль, потому что он предоставляет больше утилит, таких как сброс или очистка "встроенных заголовков", таких как Content-Type, Content-Length и Server.

оно также позволяет вам определить опционное Критерии кода состояния HTTP с помощью -s опция и необязательные критерии типа контента с помощью -t опция при изменении выходных заголовков с помощью more_set_headers и more_clear_headers директивы...


Если вы не против просто изменить заголовок на другую строку из пяти букв или меньше, вы можете просто исправить двоичный файл.

sed -i 's/nginx\r/thing\r/' `which nginx`

который, как решение, имеет несколько заметных преимуществ. А именно, что вы можете разрешить управление версиями nginx менеджеру пакетов (таким образом, без компиляции из исходного кода), даже если nginx-extras недоступен для вашего дистрибутива, и вам не нужно беспокоиться о каком-либо дополнительном коде чего-то вроде nginx-extras уязвимый.

конечно, вы также захотите установить опцию server_tokens off, чтобы скрыть номер версии или исправить эту строку формата.

Я говорю "пять букв или меньше", потому что, конечно, вы всегда можете заменить:

nginx\r\0

С

bob\r\0\r\0

оставляя последние два байта без изменений.

Если вы действительно хотите больше пяти символов, вы захотите оставьте server_tokens включенным и замените (немного длиннее) строку формата, хотя снова есть верхний предел этой длины, наложенный длиной строки формата - 1 (для возврата каретки).

...Если ничто из вышеперечисленного не имеет смысла для вас, или вы никогда не исправляли двоичный файл раньше, вы можете держаться подальше от этого подхода.


Установить Nginx Extras

sudo apt-get update
sudo apt-get install nginx-extras

детали сервера можно удалить из ответа, добавив следующие две строки в nginx.conf (в разделе http)

more_clear_headers Server;
server_tokens off;

единственный способ-изменить файл src/http / ngx_http_header_filter_module.с. Я изменил nginx в строке 48 на другую строку.

что вы можете сделать в файле конфигурации nginx, это установить server_tokens выкл. Это предотвратит печать nginx номера версии.

чтобы проверить вещи, попробуйте curl-I http://vurbu.com/ / grep Server

Он должен вернуть

Server: Hai

после того, как я прочитал ответ Парфянского выстрела, я копаю в /usr/sbin/nginx двоичный файл. Потом я узнал, что в файле эти три строки.

Server: nginx/1.12.2
Server: nginx/1.12.2
Server: nginx

в основном первые два из них предназначены для server_tokens on; директива (версия сервера включена). Затем я изменяю критерии поиска, чтобы соответствовать этим строкам в двоичном файле.

sed -i 's/Server: nginx/Server: thing/' `which nginx`

после того, как я копаю дальше, я узнал, что сообщение об ошибке, созданное nginx, также включено в этот файл.

<hr><center>nginx</center>

там есть три из них, один без версии, два из них включены версии. Поэтому я запускаю следующую команду для замены строки nginx в сообщении об ошибке.

sed -i 's/center>nginx/center>thing/' `which nginx`

вы спрашиваете о значении заголовка сервера в ответе? Вы можете попробовать изменить это с помощью директивы add_header, но я не уверен, что это сработает. http://wiki.codemongers.com/NginxHttpHeadersModule