Frage

Es gibt eine option, um ausblenden-version, damit es wird nur angezeigt, nginx, aber es ist ein Weg, um zu verbergen, dass auch so ein es wird nicht alles zeigen oder ändern Sie die Kopfzeile?

War es hilfreich?

Lösung

Wie Apache, dies ist ein schneller Bearbeiten, um die Quelle und kompilieren Sie neu.Von Calomel.org:

Der Server:string ist der header, die gesendet wird zurück an den client zu sagen Ihnen, welche Art von http-server, den Sie running und gegebenenfalls welche version.Diese Zeichenfolge wird von Orten wie Alexia und Netcraft zu sammeln Statistiken darüber, wie viele und welche Art der web-server sind live auf der Internet.Unterstützen Sie den Autor und Statistiken für Nginx wir empfehlen halten Sie diese Zeichenfolge ist.Aber, für die Sicherheit, die Sie möglicherweise nicht möchten, dass die Leute wissen, was Sie ausführen, und Sie können ändern Sie dies in den source-code.Bearbeiten die source-Datei src/http/ngx_http_header_filter_module.c beim Blick in den Zeilen 48 und 49.Sie können ändern Sie den String zu, was Sie wollen.

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

März 2011 edit: Requisiten zu Flavius unten für den Hinweis auf eine neue option, ersetzen die standard-Nginx HttpHeadersModule mit dem Gabel - HttpHeadersMoreModule.Kompilieren Sie das standard-Modul ist noch die schnelle Lösung, und macht Sinn, wenn Sie möchten, verwenden Sie die standard-Modul und nicht das ändern der server-string oft.Aber wenn Sie mehr wollen als die, die HttpHeadersMoreModule ist eine starke Projekt-und Sie können tun alle Arten von Laufzeit-schwarze Magie mit Ihren HTTP-Headern.

Andere Tipps

Wenn Sie nginx Proxy eine Back-End-Anwendung verwenden und wollen die Back-End seinen eigenen Server: Header ohne nginx werben sie überschreiben, dann können Sie innerhalb Ihrer server {…} Strophe gehen und setzen Sie:

proxy_pass_header Server;

Das wird nginx überzeugen, dass die Header in Ruhe zu lassen und nicht neu schreibt den Wert von dem Back-End.

Das letzte Update war vor einer Weile, also hier ist das, was für mich auf Ubuntu gearbeitet:

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

Dann die folgenden zwei Zeilen an den http Abschnitt nginx.conf hinzufügen, die in der Regel bei /etc/nginx/nginx.conf befinden:

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

Auch vergessen Sie nicht nginx mit sudo service nginx restart neu zu starten.

Einfache, bearbeiten /etc/nginx/nginx.conf und entfernen Kommentar von

#server_tokens off;

Suchen Sie nach http Abschnitt.

Es ist sehr einfach: diese Zeilen-Server-Abschnitt hinzufügen:

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

Es gibt ein spezielles Modul: http://wiki.nginx.org/NginxHttpHeadersMoreModule

  

Dieses Modul ermöglicht es Ihnen, Set hinzuzufügen, oder eine Ausgabe oder Eingabe-Header zu löschen, die Sie angeben.

     

Dies ist eine erweiterte Version des Standard- Header Modul, weil es mehr Dienstprogramme wie das Zurücksetzen oder „builtin Header“ wie Content-Type, Content-Length und Server bietet löschen.

     

Es ermöglicht Sie auch ein optionales HTTP-Statuscode Kriterien der -s Option und ein optionalen Inhaltstyp Kriterien mit der -t Option, während der Ausgänge Header mit dem more_set_headers und more_clear_headers Direktiven ...

Installieren Nginx Extras

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

Server Details können durch Zugabe von folgenden zwei Zeilen in der nginx.conf (unter http Abschnitt)

aus Reaktion entfernt werden
more_clear_headers Server;
server_tokens off;

Wenn Sie in Ordnung sind mit nur den Header an einem anderen Zeichenfolge zu ändern fünf Buchstaben oder weniger, können Sie einfach die binäre Patch.

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

, die als Lösung, hat einige bemerkenswerte Vorteile. Das heißt, dass Sie Ihre nginx Versionierung erlauben kann durch den Paketmanager gehandhabt werden (so, kein Kompilieren von der Quelle), auch wenn nginx-Extras für Ihre Distribution nicht verfügbar ist, und Sie müssen nicht über jede der zusätzlichen Sorgen zu machen brauchen Code von so etwas wie nginx-Extras verwundbar zu sein.

Natürlich werden Sie auch die Möglichkeit server_tokens off festlegen möchten, um die Versionsnummer zu verbergen, oder dass die Format-String-Patch als auch.

Ich sage „fünf Buchstaben oder weniger“, weil natürlich kann man immer ersetzen:

  

nginx \ r \ 0

mit

  

bob \ r \ 0 \ r \ 0

verlassen die letzten beiden Bytes unverändert.

Wenn Sie tatsächlich mehr als fünf Zeichen wollen, möchten Sie server_tokens auf, und ersetzen Sie das (etwas länger) Format-String verlassen, obwohl auch hier gibt es eine Obergrenze für diese durch die Länge des Formatstrings auferlegte Länge - 1 (für den Wagenrücklauf).

... Wenn keine der oben genannten Sinn macht für Sie, oder Sie noch nie ein binäres geflickt, können Sie weg von diesem Ansatz bleiben wollen, though.

Der einzige Weg ist, um die Datei src / http / ngx_http_header_filter_module.c zu ändern. Ich änderte nginx auf der Leitung 48 in eine andere Zeichenfolge.

Was können Sie in der nginx Konfigurationsdatei tun, ist auf server_tokens ausgeschaltet. Dadurch wird verhindert, nginx vom Druck der Versionsnummer.

Dinge zu überprüfen, versuchen Sie curl -I http://vurbu.com/ | grep Server

Es sollte zurückkehren

Server: Hai

Nachdem ich Parther Schuss Antwort lesen, grabe ich in /usr/sbin/nginx Binärdatei. Dann fand ich heraus, dass die Datei die folgenden drei Zeilen enthält.

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

Grundsätzlich erste zwei von ihnen sind für server_tokens on; Richtlinie gemeint (Server-Version enthalten). Dann habe ich die Suchkriterien ändern diese Zeilen in der Binärdatei entsprechen.

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

Nachdem ich graben weiter fand ich heraus, dass die Fehlermeldung von nginx produziert ebenfalls in dieser Datei enthalten ist.

<hr><center>nginx</center>

Es gibt drei von ihnen, eine ohne die Version, zwei von ihnen die Version enthalten. Also habe ich den folgenden Befehl nginx Zeichenfolge innerhalb der Fehlermeldung zu ersetzen.

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

Nach nginx Dokumentation unterstützt Werte individuelle oder auch die Ausschluss:

Syntax: server_tokens on | off | build | string;

aber leider nur mit einem kommerziellem Abonnement :

  

Darüber hinaus im Rahmen unseres kommerziellen Abonnements, ausgehend von   Version 1.9.13 die Unterschrift auf Fehlerseiten und die „Server“ Antwort   Header-Feld Wert kann explizit mit dem String-Set mit   Variablen. Ein leerer String deaktiviert die Emission des „Servers“   Feld.

Ich weiß, dass die Post ein bisschen alt, aber ich habe eine Lösung einfach gefunden, die ohne Kompilierung nginx von der Quelle auf Debian basierende Distribution funktioniert.

Erster nginx-Extras-Paket

installieren
  

sudo apt installieren nginx-Extras

Dann die nginx laden mehr HTTP-Header-Modul von nginx.conf Editieren und Hinzufügen der folgenden Zeile innerhalb des Servers Block

  

load_module modules / ngx_http_headers_more_filter_module.so;

Sobald es fertig Sie beide Zugriff auf more_set_headers und more_clear_headers Richtlinien haben werden.

Sind Sie fragen über den Server-Header-Wert in der Antwort? Sie können versuchen, dass mit einer add_header Richtlinie zu ändern, aber ich bin nicht sicher, ob es funktioniert. http://wiki.codemongers.com/NginxHttpHeadersModule

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top