So verbergen Sie die Versionsnummer und die Cache-Zeit von Webseiten in Nginx

So verbergen Sie die Versionsnummer und die Cache-Zeit von Webseiten in Nginx

Nginx-Optimierung --- Versionsnummer und Cache-Zeit für Webseiten verbergen

Konfigurieren Sie Nginx, um die Versionsnummer auszublenden

In einer Produktionsumgebung müssen Sie die Nginx-Versionsnummer verbergen, um Sicherheitsprobleme zu vermeiden.

Offenlegung von Sicherheitslücken

Methode anzeigen

● Verwenden Sie das Fiddler-Tool, um die Nginx-Versionsnummer auf dem Windows-Client zu überprüfen

Verwenden Sie den Befehl „curl -I URL“, um die Anzeige im CentOS-System durchzuführen

So verbergen Sie die Versionsnummer in Nginx

● Ändern Sie die Konfigurationsdateimethode

●Quellcode ändern

Ändern der Konfigurationsdateimethode

1. Setzen Sie den Wert der Option server_tokens in der Nginx-Konfigurationsdatei auf off

[root@www conf]# vim nginx.conf
.....
Server-Tokens aus;
.....
[root@www conf]# nginx -t

2. Starten Sie den Dienst neu und rufen Sie die Website mit dem Befehl curl -I auf, um zu testen

[root@www conf]# service nginx restart
[root@www conf]# curl -1 http://192.1 68.9.209/
HTTP/1.1200 OK
Server: nginx

3. Wenn die Option fastcgi param SERVER SOFTWARE in der PHP-Konfigurationsdatei konfiguriert ist. Bearbeiten Sie dann die php-fpm-Konfigurationsdatei und ändern Sie den Wert des fastcgi-Parameters SERVER SOFTWARE in

fastcgi_param SERVER_SOFTWARE nginx;

Quellcode ändern

Die Nginx-Quellcodedatei /usr/src/nginx-1.12.0/src/core/nginx.h enthält Versionsinformationen. Sie können sie so einstellen, dass sie nach Belieben neu kompiliert und installiert wird, und die Versionsinformationen ausblenden.

Beispiel:

#define NGINX_ _VERSION "1.1.1" , ändere die Versionsnummer auf 1.1.1
#define NGINX_ VER "IIS/", ändere den Softwaretyp in IIS

Starten Sie den Dienst neu und rufen Sie die Website mit dem Befehl curl -I auf, um sie zu testen.

Nginx-Benutzer und -Gruppe ändern

Der Nginx-Laufzeitprozess muss über Benutzer- und Gruppenunterstützung verfügen, um die Zugriffskontrolle beim Lesen von Websitedateien zu implementieren.

Nginx verwendet standardmäßig das Benutzerkonto und das Gruppenkonto nobody, was normalerweise geändert werden muss

Änderungsmethode

●Geben Sie beim Kompilieren und Installieren den Benutzer und die Gruppe an. ●Ändern Sie die Konfigurationsdatei, um den Benutzer und die Gruppe anzugeben.

Ändern Sie die Konfigurationsdatei, um anzugeben

1. Erstellen Sie ein neues Benutzerkonto, beispielsweise nginx

2. Ändern Sie die Benutzeroption in der Hauptkonfigurationsdatei und geben Sie das Benutzerkonto an

3. Starten Sie den Nginx-Dienst neu, damit die Konfiguration wirksam wird

4. Verwenden Sie den Befehl ps aux, um die Prozessinformationen von nginx anzuzeigen und den laufenden Benutzer zu überprüfen

Auswirkung der Kontoänderung

[root@www conf]# vi nginx.conf
Benutzer nginx nginx;
[root@www conf]# service nginx restart
[root@www conf]# ps aux lgrep nginx
root 1300340.0 0.0 20220 620? Ss 19:41 0:00 nginx: Master-Prozess
/usr/local/sbin/nginx
nginx 1300350.0 0.0 20664 1512 ?S 19:41 0:00 nginx: Arbeitsprozess

Konfigurieren Sie die Cachezeit für Nginx-Webseiten

Wenn Nginx Webseitendaten an den Client zurückgibt, können Sie die Cache-Zeit festlegen, um eine direkte Rückgabe zu ermöglichen, wenn derselbe Inhalt in Zukunft angefordert wird. Dadurch werden wiederholte Anforderungen vermieden und der Zugriff beschleunigt. Normalerweise wird sie für statische Webseiten festgelegt, und für dynamische Webseiten wird keine Cache-Zeit festgelegt. Sie können Fiddler im Windows-Client verwenden, um die Cache-Zeit der Webseite anzuzeigen.

So richten Sie es ein

Sie können die Konfigurationsdatei ändern und Ablaufparameter für bestimmte Inhalte im HTTP-Abschnitt, Serverabschnitt oder Standortabschnitt hinzufügen.

Beispiel

Ändern Sie die Nginx-Konfigurationsdatei und fügen Sie den Parameter „expires“ im Abschnitt „location“ hinzu.

Standort ~ \.(gifjpgliepglpnglbmplico)$ {
Stamm-HTML;
läuft in 1 Tag ab;

Beispieldemonstration zum Ausblenden der Versionsnummer

1. Kompilieren und installieren Sie den Nginx-Dienst

Schritt 1: Das Quellpaket per Remote-Zugriff unter Windows abrufen und unter Linux mounten

[root@localhost ~]# smbclient -L //192.168.235.1
Geben Sie das Passwort von SAMBA\root ein: 
Freigabename Typ Kommentar
--------- ---- -------
LNMP-Datenträger 

[root@localhost ~]# mkdir /abc
[root@localhost ~]# mount.cifs //192.168.235.1/LNMP /abc
Passwort für root@//192.168.235.1/LNMP: 
[root@localhost ~]# ls /abc
Discuz_X3.4_SC_UTF8.zip nginx-1.12.2.tar.gz
spiel.jpg php-7.1.10.tar.bz2
mysql-boost-5.7.20.tar.gz php-7.1.20.tar.gz
nginx-1.12.0.tar.gz

Schritt 2: Entpacken Sie das Quellpaket

[root@localhost ~]# cd /abc
[root@localhost abc]# tar zxvf nginx-1.12.0.tar.gz -C /opt
[root@localhost abc]# ls /opt
nginx-1.12.0 rh

Schritt 3: Herunterladen und Installieren des Kompilierungskomponentenpakets

[root@localhost abc]# cd /opt
[root@localhost opt]# yum install -y \
> gcc \ //C-Sprache> gcc-c++ \ //C++-Sprache> pcre-devel \ //PCRE-Sprachtool> zlib-devel //Bibliothek mit Komprimierungsfunktionen

Schritt 4: Erstellen Sie einen Programmbenutzer und konfigurieren Sie die mit dem Nginx-Dienst verbundenen Komponenten

[root@localhost opt]# useradd -M -s /sbin/nologin nginx
//Programmbenutzer nginx erstellen und die Anmeldung beim Terminal einschränken [root@localhost opt]# cd nginx-1.12.0/
[root@localhost nginx-1.12.0]# ./konfigurieren \      
//nginx konfigurieren
> --prefix=/usr/local/nginx \    
//Installationspfad angeben> --user=nginx \
//Benutzernamen angeben> --group=nginx \
//Geben Sie die Gruppe an, zu der der Benutzer gehört> --with-http_stub_status_module
//Statusstatistikmodul installieren

Schritt 5: Nginx kompilieren und installieren

[root@localhost nginx-1.12.0]# make && make install

Schritt 6: Optimieren Sie das Startskript des Nginx-Dienstes und erstellen Sie einen Befehls-Softlink

[root@localhost nginx-1.12.0]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/ 
//Erstellen Sie einen Softlink zum Nginx-Servicebefehl zum Systembefehl [root@localhost nginx-1.12.0]# systemctl stop firewalld.service 
//Firewall ausschalten [root@localhost nginx-1.12.0]# setenforce 0
//Erweiterte Sicherheitsfunktionen deaktivieren [root@localhost nginx-1.12.0]# nginx 
//Geben Sie nginx ein, um den Dienst zu starten [root@localhost nginx-1.12.0]# netstat -ntap | grep 80 //Zeigen Sie den Dienstport 80 an, um zu zeigen, dass TCP aktiviert ist 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 7520/nginx: master

Schritt 7: systemctl verwaltet nginx-Skripte

[root@localhost ~]# vim /lib/systemd/system/nginx.service ##Konfigurationsdatei erstellen [Unit]
Beschreibung=nginx ##Beschreibung Nach=network.target ##Beschreibung des Diensttyps [Dienst]
Type=forking ##Im Hintergrund ausgeführt formPIDFile=/usr/local/nginx/logs/nginx.pid ##Speicherort der PID-DateiExecStart=/usr/local/nginx/sbin/nginx ##Dienst startenExecReload=/usr/bin/kill -s HUP $MAINPID ##Neuladen gemäß PID konfigurierenExecStop=/usr/bin/kill -s QUIT $MAINPID ##Prozess gemäß PIDPrivateTmp=true beenden
[Installieren]
WantedBy=Mehrbenutzer.Ziel

[root@localhost ~]# chmod 754 /lib/systemd/system/nginx.service ##Ausführungsberechtigungen festlegen [root@localhost ~]# systemctl stop nginx.service ##nginx herunterfahren 
[root@localhost ~]# systemctl start nginx.service ##Starten Sie nginx

2. Verbergen Sie die Versionsnummer, indem Sie die Konfigurationsdatei ändern

Schritt 1: Überprüfen Sie die standardmäßige Nginx-Versionsnummer

[root@localhost ~]# curl -I http://192.168.235.158 ##Überprüfen Sie die Versionsnummer HTTP/1.1 200 OK
Server: nginx/1.12.0
##Die sichtbare Versionsnummer ist 1.12.0
Datum: Mi., 13. Nov. 2019 08:32:59 GMT
Inhaltstyp: text/html
Inhaltslänge: 612
Letzte Änderung: Mittwoch, 6. November 2019, 01:53:19 GMT
Verbindung: Keep-Alive
ETag: "5dc2278f-264"
Akzeptierte Bereiche: Bytes

Schritt 2: Ändern Sie die Konfigurationsdatei nginx.conf

[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf

http {
  mime.types einschließen;
  Standardtyp Anwendung/Oktett-Stream;
  Server-Tokens aus;
##Fügen Sie die Option server_tokens zum Abschnitt http-Protokoll hinzu und setzen Sie den Wert auf off

jpg

Schritt 3: Überprüfen Sie, ob die Nginx-Versionsnummer ausgeblendet ist

[root@localhost ~]# systemctl stop nginx.service 
[root@localhost ~]# systemctl start nginx.service
[root@localhost ~]# curl -I http://192.168.235.158
HTTP/1.1 200 OK
Server: nginx
##Die sichtbare Versionsnummer wurde ausgeblendet Datum: Mi, 13. Nov. 2019 09:18:00 GMT
Inhaltstyp: text/html
Inhaltslänge: 612
Letzte Änderung: Mittwoch, 6. November 2019, 01:53:19 GMT
Verbindung: Keep-Alive
ETag: "5dc2278f-264"
Akzeptierte Bereiche: Bytes

3. Ändern Sie den Konfigurationsquellcode, um die Versionsnummer auszublenden

Schritt 1: Ändern Sie die Konfigurationsdatei nginx.conf

[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
...
 Server-Tokens ein;
 ##Aus durch Ein ersetzen

Schritt 2: Ändern Sie die Versionsinformationen in der Quellcodedatei nginx.h

[root@localhost ~]# vim /opt/nginx-1.12.0/src/core/nginx.h

#define NGINX_VERSION "1.1.1"
##Versionsinformationen auf 1.1.1 ändern

Schritt 3: Nginx neu kompilieren

[root@localhost ~]# cd /opt/nginx-1.12.0/
[root@localhost nginx-1.12.0]# ./konfigurieren \
> --prefix=/usr/local/nginx \
> --user=nginx \
> --group=nginx \
> --mit-http_stub_status_module
[root@localhost nginx-1.12.0]# make && make install

Schritt 4: Überprüfen Sie, ob die Nginx-Versionsnummer ausgeblendet ist

[root@localhost nginx-1.12.0]# curl -I http://192.168.235.158 
HTTP/1.1 200 OK
Server: nginx/1.1.1
##Die Versionsnummer wurde erfolgreich auf 1.1.1 geändert
Datum: Mi., 13. Nov. 2019 10:20:23 GMT
Inhaltstyp: text/html
Inhaltslänge: 612
Letzte Änderung: Mittwoch, 6. November 2019, 01:53:19 GMT
Verbindung: Keep-Alive
ETag: "5dc2278f-264"
Akzeptierte Bereiche: Bytes

Beispieldemonstration der Cachezeit einer Webseite

Schritt 1: Kopieren Sie das Bild in das Site-Verzeichnis

[root@localhost nginx-1.12.0]# ls /abc
Discuz_X3.4_SC_UTF8.zip nginx-1.12.2.tar.gz
spiel.jpg php-7.1.10.tar.bz2
mysql-boost-5.7.20.tar.gz php-7.1.20.tar.gz
nginx-1.12.0.tar.gz
[root@localhost nginx-1.12.0]# cp /abc/game.jpg /usr/local/nginx/html/
[root@localhost nginx-1.12.0]# cd /usr/local/nginx/html/
[root@localhost html]# ls
50x.html spiel.jpg index.html

Schritt 2: Ändern Sie die index.html-Seite von Nginx

[root@localhost html]# vim index.html

<h1>Willkommen bei nginx!</h1>
<img src="spiel.jpg"/>
##Fügen Sie den Bildpfad unter dem h1-Tag hinzu

Schritt 3: Nginx .conf-Datei ändern

[root@localhost html]# vim /usr/local/nginx/conf/nginx.conf

Benutzer nginx nginx;
##Geben Sie diesen Zeileneintrag separat ein, geben Sie den Benutzer nginx an, geben Sie die Gruppe nginx an

 Standort ~\.(gif|jepg|jpg|ico|bmp|png)$ {
      Stamm-HTML;
      läuft in 1 Tag ab;
      ##Die oben genannten Bildtypen werden einen Tag lang zwischengespeichert}

[root@localhost html]# systemctl stop nginx.service
[root@localhost html]# systemctl start nginx.service

Schritt 4: Öffnen Sie zur Überprüfung eine virtuelle Win10-Maschine

Installieren Sie die Paketerfassungssoftware fiddler.exe auf dem Client und öffnen Sie den Browser, um auf die Webseite 192.168.235.158 zuzugreifen.

Zusammenfassen

Oben habe ich Ihnen die versteckte Versionsnummer von Nginx und die Cache-Zeit von Webseiten vorgestellt. Ich hoffe, es wird Ihnen helfen. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und ich werde Ihnen rechtzeitig antworten. Ich möchte auch allen für ihre Unterstützung der Website 123WORDPRESS.COM danken!
Wenn Sie diesen Artikel hilfreich finden, können Sie ihn gerne abdrucken und dabei bitte die Quelle angeben. Vielen Dank!

Das könnte Sie auch interessieren:
  • So verbergen und fälschen Sie die Versionsnummer in Nginx
  • So verbergen Sie die Versionsnummer in Nginx
  • Lösung zum Verbergen der Versionsnummer und der Webserverinformationen von Nginx
  • Mehrere Möglichkeiten, Nginx so zu konfigurieren, dass die Versionsnummer ausgeblendet wird

<<:  Klassischer MySQL-High-Level-/Befehlszeilenvorgang (schnell) (empfohlen)

>>:  Praktisches Beispiel für verschachtelte Routen im vue.js Router

Artikel empfehlen

Beispiel für die Verwendung von UserMap in IMG

usemap ist ein Attribut des <img>-Tags, das ...

MySQL-Datenbanktabelle und Datenbankpartitionierungsstrategie

Lassen Sie uns zunächst darüber sprechen, warum w...

Detaillierte Erklärung der Verwendung und Funktion des MySQL-Cursors

[Verwendung und Funktion des MySQL-Cursors] Beisp...

Implementierungsprinzip der MySQL MyISAM-Standardspeicher-Engine

Standardmäßig generiert die MyISAM-Tabelle drei D...

CSS3-Filtercode zum Erreichen des Grau- oder Schwarzmodus auf Webseiten

Frontend css3.filter kann nicht nur den Graueffek...

So funktionieren React Hooks

Inhaltsverzeichnis 1. React Hooks vs. reine Funkt...

Design-Sharing der Download-Seite des Pengyou.com-Mobilclients (Bild und Text)

Schauen wir uns zunächst einige einfache Daten an:...

Detaillierte Erklärung der grundlegenden Verwendung des SSH-Befehls ssh-keygen

Die SSH-Public-Key-Authentifizierung ist eine der...

Testen des Hyperlink-Öffnungsziels

Das Zielattribut eines Links bestimmt, wohin der L...

Vier praktische Tipps für JavaScript-String-Operationen

Inhaltsverzeichnis Vorwort 1. Eine Zeichenfolge t...

Besser aussehende benutzerdefinierte CSS-Stile (Titel h1 h2 h3)

Rendern Häufig verwendete Stile im Blog Garden /*...