Подтвердить что ты не робот

Как изменить заголовок сервера, возвращаемый nginx?

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

4b9b3361

Ответ 1

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

Сервер: строка - это заголовок, который отправляется обратно клиенту, чтобы сообщить их, какой тип сервера http вы и, возможно, какая версия. Эта строка используется в таких местах, как Alexia и Netcraft собирать статистика о том, сколько и чего тип веб-сервера живут на Интернет. Поддержать автора и статистики для Nginx мы рекомендуем сохраняя эту строку как есть. Но для вы не хотите, чтобы люди знать, что вы используете, и вы можете измените это в исходном коде. редактировать исходный файл 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 г. Редактирование: Реквизиты Flavius ​​ниже для указания новой опции, заменив стандарт Nginx HttpHeadersModule с раздвоенным HttpHeadersMoreModule. Перекомпиляция стандартного модуля по-прежнему является быстрым решением, и имеет смысл, если вы хотите использовать стандартный модуль и не будете часто менять строку сервера. Но если вы хотите больше этого, HttpHeadersMoreModule - сильный проект и позволяет делать все виды черной магии времени выполнения с вашими HTTP-заголовками.

Ответ 2

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

proxy_pass_header Server;

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

Ответ 3

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

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

Затем добавьте следующие две строки в раздел http 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.

Ответ 4

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

#server_tokens off;

Искать раздел http.

Ответ 5

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

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

Ответ 6

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

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

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

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

Ответ 7

Установите дополнения Nginx

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

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

more_clear_headers Server;
server_tokens off;

Ответ 8

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

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

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

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

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

Nginx\г\0

с

боб\г\0\г\0

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

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

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

Ответ 9

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

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

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

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

Server: Hai

Ответ 10

После того, как я прочитал ответ Parthian Shot, я копаюсь в двоичном файле /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'

Ответ 11

Согласно документации nginx, он поддерживает пользовательские значения или даже исключение:

Syntax: server_tokens on | off | build | string;

но к сожалению только с коммерческой подпиской

Кроме того, в рамках нашей коммерческой подписки, начиная с версии 1.9.13, подпись на страницах ошибок и значение поля заголовка ответа "Сервер" можно задавать явно, используя строку с переменными. Пустая строка отключает передачу поля "Сервер".

Ответ 12

Я знаю, что пост довольно старый, но я нашел простое решение, которое работает на дистрибутиве на основе Debian без компиляции nginx из исходного кода.

Сначала установите пакет nginx-extras

sudo apt установить nginx-дополнения

Затем загрузите модуль nginx http headers more, отредактировав nginx.conf и добавив следующую строку внутри блока сервера

load_module modules/ngx_http_headers_more_filter_module.so;

После этого вы получите доступ к директивам more_set_headers и more_clear_headers.

Ответ 13

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