Jak zmienić nagłówek serwera zwracany przez nginx?

Jest opcja ukrycia wersji, aby wyświetlała tylko nginx, ale czy jest sposób, aby ukryć, że zbyt, aby nie pokazać nic lub zmienić nagłówek?

Author: Digital site, 2008-10-29

11 answers

Podobnie jak Apache, jest to szybka edycja źródła i przekompilowanie. Od Calomel.org :

Server: string jest nagłówkiem, który jest odsyłany do Klienta w celu poinformowania im jaki typ serwera http jesteś uruchamianie i ewentualnie jaka wersja. Ciąg ten jest używany przez takie miejsca jak Alexia i Netcraft do zbierania statystyki ile i z czego typ serwera www są na żywo na Internet. Wspierać autora i statystyki dla Nginx polecamy trzymanie tego Sznurka tak jak jest. Ale dla bezpieczeństwo, którego możesz nie chcieć wiedzieć, co biegniesz i możesz zmień to w kodzie źródłowym. Edytuj plik źródłowy src/http/ngx_http_header_filter_module.c spójrz na linie 48 i 49. Możesz Zmień ciąg na dowolny chcę.

## 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;

W 2011 roku firma Nginx wprowadziła do swojej oferty nową opcję, która zastąpiła standard Nginx HttpHeadersModule z rozwidlonym HttpHeadersMoreModule. Rekompilacja standardu moduł jest nadal szybką poprawką i ma sens, jeśli chcesz użyć standardowego modułu i nie będziesz często zmieniał ciągu serwera. Ale jeśli chcesz czegoś więcej, HttpHeadersMoreModule jest silnym projektem i pozwala Ci wykonywać wszelkiego rodzaju czarną magię w trybie runtime z nagłówkami HTTP.

 56
Author: joelhardi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-03-08 21:53:06

Jeśli używasz nginx do proxy aplikacji back-end i chcesz, aby back-end reklamował swój własny nagłówek Server: bez nadpisywania go przez nginx, możesz wejść do swojej strofy server {…} i ustawić:

proxy_pass_header Server;

To przekonuje nginx do pozostawienia tego nagłówka w spokoju i nie przepisywania wartości ustawionej przez back-end.

 118
Author: Brandon Rhodes,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-02-12 22:08:16

Ostatnia aktualizacja była jakiś czas temu, więc oto, co działało dla mnie na Ubuntu:

sudo apt-get update
sudo apt-get install nginx-extras
Następnie dodaj następujące dwie linie do http sekcji nginx.conf, która zwykle znajduje się w /etc/nginx/nginx.conf:
sudo nano /etc/nginx/nginx.conf
server_tokens off; # removed pound sign
more_set_headers 'Server: Eff_You_Script_Kiddies!';
Nie zapomnij również ponownie uruchomić nginx za pomocą sudo service nginx restart.
 62
Author: jamescampbell,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-08 08:07:24

Proste, edycja / etc/nginx / nginx.conf i Usuń komentarz z

#server_tokens off;

Wyszukaj http .

 33
Author: Rui Marques,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-11-15 15:51:54

To bardzo proste: dodaj te linie do sekcji serwera:

server_tokens off;
more_set_headers 'Server: My Very Own Server';
 30
Author: Farsheed,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-22 11:38:04

Istnieje specjalny moduł: http://wiki.nginx.org/NginxHttpHeadersMoreModule

Ten moduł pozwala na dodanie, ustawienie lub wyczyszczenie dowolnego nagłówka wyjściowego lub wejściowego, które określisz.

Jest to ulepszona wersja standardowego modułu nagłówki , ponieważ zapewnia więcej narzędzi, takich jak resetowanie lub czyszczenie "wbudowanych nagłówków", takich jak Content-Type, Content-Length, i Server.

Pozwala również określić opcjonalne kryteria kodu statusu HTTP za pomocą -s opcja i opcjonalne kryteria typu zawartości przy użyciu opcji -t podczas modyfikowania nagłówków wyjściowych dyrektywami more_set_headers i more_clear_headers...

 25
Author: Flavius,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-30 14:35:00

Jeśli nie masz nic przeciwko zmianie nagłówka na inny ciąg pięciu lub mniej liter, możesz po prostu łatać plik binarny.

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

Które jako rozwiązanie ma kilka znaczących zalet. Mianowicie, że możesz pozwolić, aby wersjonowanie nginx było obsługiwane przez menedżera pakietów (więc nie ma kompilacji ze źródła), nawet jeśli nginx-extras nie jest dostępny dla twojej dystrybucji i nie musisz się martwić, że jakikolwiek dodatkowy kod czegoś takiego jak nginx-extras jest podatny.

Oczywiście, będziesz również chciał ustawić opcję server_tokens off, aby ukryć numer wersji lub poprawić ten format.

Mówię "pięć liter lub mniej", ponieważ oczywiście zawsze można zastąpić:

Nginx\r\0

Z

Bob\r\0 \ r\0

Pozostawienie dwóch ostatnich bajtów bez zmian.

Jeśli rzeczywiście chcesz więcej niż pięć znaków, będziesz chciał zostawić włączony server_tokens i zastąpić (nieco dłuższy) ciąg formatujący, chociaż ponownie istnieje górna granica tej długości narzucona długością ciągu formatu - 1(dla powrotu karetki).

...Jeśli żadna z powyższych kwestii nie ma dla Ciebie sensu lub nigdy wcześniej nie poprawiłeś pliku binarnego, możesz jednak trzymać się z dala od tego podejścia.

 15
Author: Parthian Shot,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-26 18:16:44

Zainstaluj Dodatki Nginx

sudo apt-get update
sudo apt-get install nginx-extras
[[2]} Dane serwera mogą być usunięte z odpowiedzi, dodając następujące dwie linie w nginx.conf (w sekcji http)
more_clear_headers Server;
server_tokens off;
 11
Author: Aamish Baloch,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-02 09:34:30

Jedynym sposobem jest zmodyfikowanie pliku src / http / ngx_http_header_filter_module.c . Zmieniłem nginx na linii 48 na inny ciąg.

To, co możesz zrobić w pliku konfiguracyjnym nginx, to ustawić server_tokens na off. Uniemożliwi to nginx wydrukowanie numeru wersji.

Aby sprawdzić, spróbuj curl-I http://vurbu.com/ / Serwer grep

It should return

Server: Hai
 2
Author: Jauder Ho,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-04-08 11:19:46

Po przeczytaniu odpowiedzi Parthian Shot, wkopuję się w /usr/sbin/nginx plik binarny. Potem dowiedziałem się, że plik zawiera te trzy linijki.

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

W zasadzie dwa pierwsze z nich są przeznaczone dla dyrektywy server_tokens on; (wersja serwerowa w zestawie). Następnie zmieniam kryteria wyszukiwania, aby pasowały do tych linii w pliku binarnym.

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

Po kopaniu dalej dowiedziałem się, że komunikat o błędzie wytwarzany przez nginx jest również zawarty w tym pliku.

<hr><center>nginx</center>

Są trzy z nich, jeden bez wersja, dwie z nich zawierały wersję Więc uruchamiam następujące polecenie, aby zastąpić ciąg nginx w komunikacie o błędzie.

sed -i 's/center>nginx/center>thing/' `which nginx`
 0
Author: Afrig Aminuddin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-08 12:32:16

Czy pytasz o wartość nagłówka serwera w odpowiedzi? Możesz spróbować zmienić to za pomocą dyrektywy add_header, ale nie jestem pewien, czy to zadziała. http://wiki.codemongers.com/NginxHttpHeadersModule

 -4
Author: Vasil,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-29 09:48:00