So verbergen Sie die Versionsnummer in Nginx

So verbergen Sie die Versionsnummer in Nginx

Nginx verbirgt die Versionsnummer

In einer Produktionsumgebung müssen Sie die Versionsnummer von Nginx verbergen, um die Offenlegung von Sicherheitslücken zu vermeiden.

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 sie auf dem CentOS-System zu überprüfen.

So verbergen Sie die Versionsnummer in Nginx

Ändern Sie die Konfigurationsdatei Ändern Sie den Quellcode

1. Installieren Sie Nginx

1. Verwenden Sie Remote-Sharing unter Linux, um Dateien abzurufen und sie im mnt-Verzeichnis bereitzustellen

[root@localhost ~]# smbclient -L //192.168.100.3/ ##Remote-Freigabezugriff Geben Sie das Kennwort von SAMBA\root ein: 

                Freigabename Typ Kommentar
                --------- ---- -------
                LNMP-C7-Diskette    
[root@localhost ~]# mount.cifs //192.168.100.3/LNMP-C7 /mnt ##In das Verzeichnis /mnt einbinden

2. Entpacken Sie das Quellpaket nach /opt und überprüfen Sie

[root@localhost ~]# cd /mnt ##Zum Einhängeverzeichnis wechseln [root@localhost mnt]# ls
Discuz_X3.4_SC_UTF8.zip nginx-1.12.2.tar.gz
mysql-boost-5.7.20.tar.gz php-7.1.20.tar.gz
[root@localhost mnt]# tar zxvf nginx-1.12.2.tar.gz -C /opt ##Entpacken Sie das Nginx-Quellpaket nach /opt [root@localhost mnt]# cd /opt/ ##Wechseln Sie in das entpackte Verzeichnis [root@localhost opt]# ls
nginx-1.12.2 rh

3. Installieren Sie das für die Kompilierung erforderliche Umgebungskomponentenpaket

[root@localhost opt]# yum -y install \
gcc \ //C-Sprache gcc-c++ \ //C++-Sprache pcre-devel \ //PCRE-Sprachtool zlib-devel //Bibliothek zur Datenkomprimierung

4. Programmbenutzer nginx erstellen und Nginx kompilieren

[root@localhost opt]# useradd -M -s /sbin/nologin nginx ##Erstellen Sie einen Programmbenutzer, der sicher und für die Anmeldung nicht verfügbar ist [root@localhost opt]# id nginx
UID = 1001 (nginx) GID = 1001 (nginx) Gruppe = 1001 (nginx)
[root@localhost opt]# cd nginx-1.12.0/ ##Wechseln Sie zum nginx-Verzeichnis [root@localhost nginx-1.12.0]# ./configure \ ##nginx konfigurieren
> --prefix=/usr/local/nginx \ ##Installationspfad> --user=nginx \ ##Benutzername> --group=nginx \ ##Benutzergruppe> --with-http_stub_status_module ##Statusstatistikmodul

5. Kompilieren und installieren

[root@localhost nginx-1.12.0]# make ##Kompilieren…
[root@localhost nginx-1.12.0]# make install ##Installieren…
[root@localhost nginx]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/ 
##Erstellen Sie einen Softlink, damit das System das Nginx-Startskript erkennt

6. Erstellen Sie Management-Skripte, um das Service-Management zu erleichtern

[root@localhost nginx]# cd /etc/init.d/ ##Wechseln Sie zum Verzeichnis der Startkonfigurationsdatei [root@localhost init.d]# ls
Funktionen Netconsole Netzwerk README
[root@localhost init.d]# vim nginx ##Bearbeiten Sie die Startskriptdatei #!/bin/bash
# chkconfig: - 99 20 ##Kommentarinformationen# Beschreibung: Nginx Service Control Script
PROG="/usr/local/nginx/sbin/nginx" ##Setzen Sie die Variable auf die Nginx-Befehlsdatei. PIDF="/usr/local/nginx/logs/nginx.pid" ##Setzen Sie die variable PID-Dateiprozessnummer auf 5346.
Fall "$1" in 
        Start)
                $PROG ##Dienst starten;;
        stoppen)
                kill -s QUIT $(cat $PIDF) ##Dienst schließen;;
        Neustart) ##Starten Sie den Dienst neu $0 stop
                $0 Start
                ;;
        neu laden) ##Dienst neu laden kill -s HUP $(cat $PIDF)
                ;;
        *) ##Fehler bei der Eingabeaufforderung echo "Verwendung: $0 {start|stop|restart|reload}"
               Ausfahrt 1
esac
Ausfahrt 0
[root@localhost init.d]# chmod +x /etc/init.d/nginx ##Geben Sie dem Startskript die Ausführungsberechtigung. [root@localhost init.d]# chkconfig --add nginx ##Zum Service-Manager hinzufügen [root@localhost init.d]# service nginx stop ##Sie können den Dienst verwenden, um nginx zu steuern
[root@localhost init.d]# Dienst nginx start

2. Versionsnummer ausblenden

[root@localhost init.d]# curl -I http://192.168.13.140/ ##Nginx-Informationen anzeigen HTTP/1.1 200 OK
Server: nginx/1.12.2 ##Versionsnummer anzeigen Datum: Di., 12. Nov. 2019 14:23:24 GMT
Inhaltstyp: text/html
Inhaltslänge: 612
Letzte Änderung: Dienstag, 12. November 2019, 13:46:35 Uhr GMT
Verbindung: Keep-Alive
ETag: "5dcab7bb-264"
Akzeptierte Bereiche: Bytes
[root@localhost init.d]# vim /usr/local/nginx/conf/nginx.conf ##Ändern Sie die Konfigurationsdatei http { ##Fügen Sie include mime.types unter http hinzu;
    Standardtyp Anwendung/Oktett-Stream;
    server_tokens off; ##Versionsnummer ausschalten [root@localhost init.d]# service nginx stop ##Dienst ausschalten [root@localhost init.d]# service nginx start ##Dienst einschalten [root@localhost init.d]# curl -I http://192.168.13.140/ ##Nginx-Informationen anzeigen HTTP/1.1 200 OK   
Server: nginx ##Versionsnummer ist ausgeblendet Datum: Di., 12. Nov. 2019 14:22:00 GMT
Inhaltstyp: text/html
Inhaltslänge: 612
Letzte Änderung: Dienstag, 12. November 2019, 13:46:35 Uhr GMT
Verbindung: Keep-Alive
ETag: "5dcab7bb-264"
Akzeptierte Bereiche: Bytes

3. Versionsnummer fälschen (muss neu kompiliert und installiert werden, kann vor dem Kompilieren und Installieren durchgeführt werden)

1. Öffnen Sie die Versionsnummer

[root@localhost init.d]# vim /usr/local/nginx/conf/nginx.conf
http {
    mime.types einschließen;
    Standardtyp Anwendung/Oktett-Stream;
    server_tokens on; ##Versionsnummer öffnen

2. Ändern Sie die Nginx-Quellpaketdatei

[root@localhost init.d]# cd /opt/nginx-1.12.2/src/core/ ##Wechseln Sie zum Verzeichnis des src-Quellpakets [root@localhost core]# vim nginx.h ##Ändern Sie die Datei #define NGINX_VERSION "1.1.1" ##Die Versionsnummer wird hier auf 1.1.1 gefälscht.

3. Neu kompilieren und installieren

[root@localhost core]# cd /opt/nginx-1.12.2/ ##Verzeichnis zu Nginx wechseln [root@localhost nginx-1.12.2]# ./configure \ ##Neu konfigurieren> --prefix=/usr/local/nginx \
> --user=nginx \
> --group=nginx \
> --mit-http_stub_status_module
[root@localhost nginx-1.12.0]# make ##Neu kompilieren…
[root@localhost nginx-1.12.0]# make install ##Neu installieren...

4. Starten Sie den Nginx-Dienst neu und überprüfen Sie die Versionsinformationen

[root@localhost nginx-1.12.2]# service nginx stop ##Schließen [root@localhost nginx-1.12.2]# service nginx start ##Öffnen [root@localhost nginx-1.12.2]# curl -I http://192.168.13.140/ ##Nginx-Informationen anzeigen HTTP/1.1 200 OK 
Server: nginx/1.1.1 ##Die Versionsnummer zu diesem Zeitpunkt ist eine gefälschte Versionsnummer Datum: Di., 12. November 2019, 14:34:02 GMT
Inhaltstyp: text/html
Inhaltslänge: 612
Letzte Änderung: Dienstag, 12. November 2019, 13:46:35 Uhr GMT
Verbindung: Keep-Alive
ETag: "5dcab7bb-264"
Akzeptierte Bereiche: Bytes

Cache-Zeit für Nginx-Webseiten

  • Wenn Nginx Webseitendaten an den Client zurückgibt, können Sie die Cache-Zeit so einstellen, dass eine direkte Rückgabe ermöglicht wird, wenn derselbe Inhalt in der Zukunft angefordert wird. So werden wiederholte Anforderungen vermieden und der Zugriff beschleunigt.
  • Bei statischen Webseiten ist diese Einstellung grundsätzlich eingestellt, bei dynamischen Webseiten ist keine Cache-Zeit eingestellt
  • Sie können Fiddler im Windows-Client verwenden, um die Cachezeit 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.

Experimentelle Umgebung

Ein Nginx-Server und eine Testmaschine Win10

1. Kopieren Sie das Bild in das Nginx-Site-Verzeichnis

[root@localhost ~]# cd /mnt/ ##Zum Einhängepunkt wechseln [root@localhost mnt]# ls
11.jpg mysql-boost-5.7.20.tar.gz php-7.1.20.tar.gz
22.jpg nginx-1.12.2.tar.gz
Discuz_X3.4_SC_UTF8.zip php-7.1.10.tar.bz2  
[root@localhost mnt]# cp 11.jpg /usr/local/nginx/html/ ##Kopieren Sie das Bild auf die Site[root@localhost mnt]# cd /usr/local/nginx/html/ ##Wechseln Sie zur Site[root@localhost html]# ls
11.jpg 50x.html index.html

Zweitens ändern Sie die Webseiteninformationen und fügen das Bild zur Datei index.html hinzu

[root@localhost html]# vim index.html ##Webseiteninformationen ändern</head>
<Text>
<h1>Willkommen bei nginx!</h1>
<img src="11.jpg"/> ##Fügen Sie das Bild zur Webseite hinzu

3. Ändern Sie die Informationen in der Konfigurationsdatei

[root@localhost html]# vim /usr/local/nginx/conf/nginx.conf ##Ändern Sie die Konfigurationsdatei events {
    Arbeiterverbindungen 1024;
}
    Benutzer nginx nginx; ##Nginx-Benutzer und -Gruppe ändern # Zugriff auf .htaccess-Dateien verweigern, wenn Apaches Dokumentstamm
  # stimmt mit nginx überein
  #
  location ~\.(gif|jepg|jpg|ico|bmp|png)$ { ##Unterstütztes Bildformat root html; ##Site läuft in 1 Tag ab; ##Cache für einen Tag}
[root@localhost html]# service nginx stop ##Schließen und öffnen Sie den Dienst [root@localhost html]# service nginx start 

Viertens: Verwenden Sie Fiddler, um den Cache anzuzeigen


Nginx-Protokollschneiden

Je länger Nginx läuft, desto länger werden auch die Protokolle. Um den Betriebsstatus von Nginx leicht zu erfassen, müssen Sie immer auf die Protokolldateien achten

Eine zu große Logdatei ist eine Katastrophe für das Monitoring

Logdateien regelmäßig kürzen

Nginx selbst verfügt nicht über die Funktion zur Protokollsegmentierung, kann jedoch eine automatische Protokollsegmentierung über das Skript der Nginx-Signalsteuerungsfunktion realisieren und eine regelmäßige Protokollsegmentierung über geplante Linux-Aufgaben durchführen.

1. Schreiben Sie eine Skriptdatei zur Protokollsegmentierung

[root@localhost ~]# vim fenge.sh ##Skriptdatei schreiben #!/bin/bash
#Dateiname:fenge.sh
d=$(date -d "-1 day" "+%Y%m%d") ##Zeit von vor einem Tag anzeigen logs_path="/var/log/nginx" ##Pfad für geteilte Protokolle speichern pid_path="/usr/local/nginx/logs/nginx.pid" ##PID-Pfad [ -d $logs_path ] || mkdir -p $logs_path ##Verzeichnis erstellen, falls kein Verzeichnis vorhanden ist mv /usr/local/nginx/logs/access.log ${logs_path}/test.com-access.log-$d
##Generieren Sie die ursprüngliche Protokolldatei im neuen Pfad kill -USR1 $(cat $pid_path) ##Beenden Sie die Neugenerierung der neuen PID-Datei find $logs_path -mtime +30 | xargs rm -rf ##Löschen Sie die Protokolldatei von vor 30 Tagen [root@localhost ~]# chmod +x fenge.sh ##Erteilen Sie die Ausführungsberechtigung [root@localhost ~]# ./fenge.sh ##Führen Sie die Skriptdatei aus

2. Überprüfen Sie die Protokollsegmentierung

[root@localhost ~]# cd /var/log/nginx/ ##Wechseln Sie zum Nginx-Protokollverzeichnis [root@localhost nginx]# ls
test.com-access.log-20191112
[root@localhost nginx]# date -s 2019-11-14 ##Ändern Sie das Datum auf die morgige Uhrzeit Donnerstag, 14. November 2019 00:00:00 CST
[root@localhost nginx]# cd ~
[root@localhost ~]# ./fenge.sh ##Führen Sie das Skript erneut aus [root@localhost ~]# cd /var/log/nginx/
[root@localhost nginx]# ls ##Protokollsegmentierungsprotokolldateien anzeigen test.com-access.log-20191112 test.com-access.log-20191113

3. Richten Sie regelmäßig geplante Aufgaben ein

[root@localhost nginx]# crontab -e ##Periodisch geplante Aufgaben 0 1 * * * /opt/fenge.sh

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • So verbergen und fälschen Sie die Versionsnummer in Nginx
  • So verbergen Sie die Versionsnummer und die Cache-Zeit von Webseiten 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

<<:  Vue3 implementiert CSS unendlichen nahtlosen Scrolleffekt

>>:  MySQL 8.0.15 Installations-Tutorial für Windows 64-Bit

Artikel empfehlen

Anwendungsbeispiele für React Hooks (6 gängige Hooks)

1. useState: Funktionskomponenten Status geben An...

Ein umfassendes Verständnis der funktionalen Komponenten von Vue.js

Inhaltsverzeichnis Vorwort Funktionale React-Komp...

Webdesign-Tipps für Formular-Eingabefelder

1. Gestricheltes Feld, wenn die Abbrechen-Schaltfl...

Beispielcode zur Implementierung der olympischen Ringe mit reinem HTML+CSS

Rendern Code - Nehmen Sie die blauen und gelben R...

So legen Sie die Anzahl der MySQL-Verbindungen fest und ermitteln sie

Holen Sie sich die Anzahl der Verbindungen --- Ho...

Grafisches Tutorial zur Installation und Konfiguration von MySQL 5.7.20 (Win10)

In diesem Artikel wird die Installations- und Kon...

Detaillierte Erklärung des virtuellen DOM und des Diff-Algorithmus in React

Die Rolle des virtuellen DOM Zunächst müssen wir ...

Zusammenfassung häufig verwendeter Toolfunktionen in Vue-Projekten

Inhaltsverzeichnis Vorwort 1. Benutzerdefinierter...

Linux /etc/network/interfaces Konfigurationsschnittstellenmethode

Die Datei /etc/network/interfaces wird in Linux z...

Tiefgreifendes Verständnis der Matching-Logik von Server und Standort in Nginx

Server-Abgleichlogik Wenn Nginx entscheidet, in w...

9 Möglichkeiten zum Ein- und Ausblenden von CSS-Elementen

Bei der Erstellung von Webseiten ist das Anzeigen...

Grundlegendes Installationstutorial zum Dekomprimieren von MySQL-Paketen

Da ich auf einen neuen Computer gewechselt bin, m...