Istnieje opcja ukrycia wersji, aby wyświetlała tylko nginx, ale czy istnieje sposób, aby to ukryć, aby nic nie wyświetlało ani nie zmieniało nagłówka?
nginx
http-headers
daniels
źródło
źródło
Odpowiedzi:
Podobnie jak Apache, jest to szybka edycja źródła i ponowna kompilacja. Z Calomel.org :
Edycja z marca 2011 r .: Podziękowania dla Flaviusa poniżej za wskazanie nowej opcji, zastępującej standardowy HttpHeadersModule Nginx przez rozwidlony HttpHeadersMoreModule . Rekompilacja standardowego modułu jest nadal szybką poprawką i ma sens, jeśli chcesz użyć standardowego modułu i nie będziesz często zmieniać łańcucha serwera. Ale jeśli chcesz czegoś więcej, HttpHeadersMoreModule jest silnym projektem i umożliwia wykonywanie wszelkiego rodzaju czarnej magii w czasie wykonywania z nagłówkami HTTP.
źródło
r->headers_out.server
.Jeśli używasz nginx do proxy aplikacji zaplecza i chcesz, aby zaplecze reklamowało swój własny
Server:
nagłówek bez nadpisywania go przez nginx, możesz wejść do swojejserver {…}
sekcji i ustawić:To przekona nginx do pozostawienia tego nagłówka w spokoju i nie przepisywania wartości ustawionej przez zaplecze.
źródło
Ostatnia aktualizacja była jakiś czas temu, więc oto, co działało dla mnie na Ubuntu:
Następnie dodaj następujące dwie linie do
http
sekcji programunginx.conf
, która zwykle znajduje się w /etc/nginx/nginx.conf:Nie zapomnij też zrestartować nginx z
sudo service nginx restart
.źródło
more_set_headers 'Server: ';
Prosto, edytuj /etc/nginx/nginx.conf i usuń komentarz z
Wyszukaj sekcję http .
źródło
To bardzo proste: dodaj te linie do sekcji serwera:
źródło
nginx-extra
aby uzyskać ten moduł.Istnieje specjalny moduł: http://wiki.nginx.org/NginxHttpHeadersMoreModule
źródło
--add-module=/path-to-headers-more-nginx-module
Zainstaluj dodatki Nginx
Szczegóły serwera można usunąć z odpowiedzi, dodając kolejne dwa wiersze w pliku nginx.conf (w sekcji http)
źródło
yum install nginx-extras
nie działa - przypuszczam, że to działa na Debia / Ubuntu itpapt-get
.Jeśli nie przeszkadza ci po prostu zmiana nagłówka na inny ciąg zawierający pięć liter lub mniej, możesz po prostu załatać plik binarny.
Co, jako rozwiązanie, ma kilka wymiernych zalet. Mianowicie, że możesz pozwolić na obsługę wersji nginx przez menedżera pakietów (więc nie kompiluj ze źródeł), nawet jeśli nginx-extras nie jest dostępny dla twojej dystrybucji i nie musisz się martwić o żadne dodatkowe kod czegoś takiego jak nginx-extras jest podatny na ataki.
Oczywiście będziesz także chciał ustawić opcję
server_tokens off
, aby ukryć numer wersji lub załatać również ten ciąg formatu.Mówię „pięć liter lub mniej”, ponieważ oczywiście zawsze możesz zamienić:
z
pozostawiając ostatnie dwa bajty bez zmian.
Jeśli faktycznie chcesz mieć więcej niż pięć znaków, będziesz chciał pozostawić server_tokens włączone i zastąpić (nieco dłuższy) ciąg formatujący, chociaż znowu istnieje górne ograniczenie tej długości narzucone przez długość ciągu formatującego - 1 (dla powrót karetki).
... Jeśli żadne z powyższych nie ma dla Ciebie sensu lub nigdy wcześniej nie załatałeś pliku binarnego, możesz jednak trzymać się z daleka od tego podejścia.
źródło
sed
powyższe polecenie,`which nginx`
część zwraca ścieżkę do pliku binarnego, ased
polecenie zamienia bajt.nginx
aby zmiany zaczęły obowiązywać. Wszystko to powiedział? Nalegam, abyś nie używał jednej z pozostałych odpowiedzi. Jeśli wszystkie rzeczy, o których mówię, nie są Ci znane i nie wiesz, do czego/etc
służy katalog, to taki hack jest trochę niebezpieczny.Jedynym sposobem jest zmodyfikowanie pliku src / http / ngx_http_header_filter_module.c. Zmieniłem nginx w linii 48 na inny ciąg.
To, co możesz zrobić w pliku konfiguracyjnym nginx, to wyłączyć server_tokens . Zapobiegnie to wypisywaniu numeru wersji przez nginx.
Aby to sprawdzić, spróbuj curl -I http://vurbu.com/ | Grep Server
Powinien powrócić
źródło
Po przeczytaniu odpowiedzi Parthian Shot zagłębiam się w
/usr/sbin/nginx
plik binarny. Wtedy dowiedziałem się, że plik zawiera te trzy linie.Zasadniczo pierwsze dwa z nich są przeznaczone do
server_tokens on;
dyrektywy (w tym wersja serwerowa). Następnie zmieniam kryteria wyszukiwania, aby pasowały do tych wierszy w pliku binarnym.Po dalszych poszukiwaniach dowiedziałem się, że komunikat o błędzie generowany przez nginx jest również zawarty w tym pliku.
Są trzy z nich, jeden bez wersji, dwa z nich zawierały wersję. Więc uruchamiam następujące polecenie, aby zastąpić ciąg nginx w komunikacie o błędzie.
źródło
/usr/sbin
folderze daje to:sed: can't read is: No such file or directory
Zgodnie z dokumentacją nginx obsługuje wartości niestandardowe, a nawet wykluczenie:
ale niestety tylko w przypadku subskrypcji komercyjnej :
źródło
Wiem, że post jest trochę stary, ale znalazłem proste rozwiązanie, które działa na dystrybucji opartej na Debianie bez kompilowania nginx ze źródeł.
Najpierw zainstaluj pakiet nginx-extras
Następnie załaduj moduł nagłówków http nginx więcej, edytując plik nginx.conf i dodając następujący wiersz w bloku serwera
Gdy to zrobisz, będziesz mieć dostęp do dyrektyw more_set_headers i more_clear_headers.
źródło
Pakiet Nginx-extra jest teraz przestarzały.
W związku z tym, że teraz zadziałało dla mnie, gdy próbowałem zainstalować różne pakiety more_set_headers 'Serwer: mój własny serwer';
Możesz po prostu wykonać następujące czynności, a żadne informacje o serwerze ani wersji nie zostaną odesłane
jeśli chcesz tylko usunąć numer wersji, to działa
źródło
Czy pytasz o wartość nagłówka serwera w odpowiedzi? Możesz spróbować to zmienić za pomocą dyrektywy add_header, ale nie jestem pewien, czy to zadziała. http://wiki.codemongers.com/NginxHttpHeadersModule
źródło