Probleme bei der Konfiguration von https-Server und Reverse-Proxy mit Nginx unter Windows

Probleme bei der Konfiguration von https-Server und Reverse-Proxy mit Nginx unter Windows

Anforderungslogik

Frontend --> Nginx über https anfordern
nginx --> Backend-Dienste über http anfordern

Installieren Sie OpenSSL

Herunterladen

Bildbeschreibung hier einfügen

Konfigurieren Sie dann die Umgebungsvariablen. Fügen Sie den Systemumgebungsvariablen Umgebungsvariablen hinzu:

Variablenname: OPENSSL_HOME

Variablenwert: F:\OpenSSL-Win64\bin;

(Der Variablenwert ist das Bin-Verzeichnis unter dem OPENSSL-Installationsort)

Zertifikat generieren

Öffnen Sie über die Kommandozeile ein beliebiges Verzeichnis und generieren Sie mit folgendem Befehl ein Zertifikat

# Erstellen Sie einen privaten Schlüssel# Sie können die Datei test beliebig benennen. Dieser Befehl fordert Sie auf, das RSA-Passwort zweimal festzulegen. Bitte merken Sie sich das Passwort, da Sie es später benötigen. Nachdem der Befehl ausgeführt wurde, wird im aktuellen Verzeichnis eine Datei test.key generiert openssl genrsa -des3 -out test.key 1024     

# Erstellen Sie ein CSR-Zertifikat. Der hier verwendete Testschlüssel ist der, der durch den vorherigen Befehl generiert wurde. Nach der Ausführung dieses Befehls müssen Sie eine Reihe von Informationen eingeben. Die wichtigste einzugebende Information ist der allgemeine Name. Der hier eingegebene Domänenname ist der Domänenname, auf den wir über https zugreifen möchten. Ich habe beispielsweise „localhost“ eingegeben. Den restlichen Inhalt können Sie beliebig ergänzen. Nach Abschluss der obigen Schritte werden im SSL-Ordner zwei Dateien angezeigt: test.csr und test.key
openssl req -new -key test.key -out test.csr

# Entfernen Sie das Kennwort. # Entfernen Sie das erforderliche Kennwort, wenn Sie Nginx mit SSL-Unterstützung laden und den oben genannten privaten Schlüssel verwenden. Andernfalls müssen Sie beim Starten von Nginx das Kennwort eingeben.
# Kopiere test.key und benennen Sie es um in test.copy.key
# Führen Sie den folgenden Befehl in der Befehlszeile aus, um das Kennwort zu entfernen (Sie müssen jetzt das Kennwort eingeben. Es handelt sich dabei um das Kennwort, das Sie oben beim Erstellen des privaten Schlüssels eingegeben haben.)
openssl rsa -in test.kopie.schlüssel -out test.schlüssel

# CRT-Zertifikat generieren. Die Zertifikatsgenerierung ist abgeschlossen. Wir haben festgestellt, dass im SSL-Ordner insgesamt 4 Dateien generiert wurden. Als nächstes müssen wir beim Konfigurieren des https-Servers die beiden Dateien test.crt und test.key verwenden.
openssl x509 -req -days 365 -in test.csr -signkey test.key -out test.crt 

Bildbeschreibung hier einfügen
Bildbeschreibung hier einfügen
Bildbeschreibung hier einfügen

Laden Sie nginx herunter und installieren Sie es. Ändern Sie die nginx-Konfiguration.

Verschieben Sie die generierten test.key und test.crt in das Verzeichnis $NGINX_ROOT/conf

#Benutzer niemand;
Arbeiterprozesse 1;

#error_log Protokolle/Fehler.log;
#error_log Protokolle/error.log Hinweis;
#error_log Protokolle/error.log-Info;

#pid-Protokolle/nginx.pid;


Ereignisse {
    Arbeiterverbindungen 1024;
}


http {
    mime.types einschließen;
    Standardtyp Anwendung/Oktett-Stream;

    #log_format main '$remote_addr - $remote_user [$time_local] "$request" '
    # '$status $body_bytes_sent "$http_referer" '
    # '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log Protokolle/access.log Haupt;

    sendfile an;
    #tcp_nopush ein;

    #keepalive_timeout 0;
    KeepAlive-Timeout 65;

    #gzip ein;

    Server {
        hören Sie 80;
        Servername localhost;

        #Zeichensatz koi8-r;

        #access_log Protokolle/Host.access.log Haupt;

        Standort / {
            Stammverzeichnis D:/lokaler Standort;
            Index Index.html Index.htm;
        }

        #Fehlerseite 404 /404.html;

        # Server-Fehlerseiten auf die statische Seite /50x.html umleiten
        #
        Fehlerseite 500 502 503 504 /50x.html;
        Standort = /50x.html {
            Stamm-HTML;
        }

        # Proxy für die PHP-Skripte an Apache, das auf 127.0.0.1:80 lauscht
        #
        #Standort ~ \.php$ {
        # Proxy-Passwort http://127.0.0.1;
        #}

        # Übergeben Sie die PHP-Skripte an den FastCGI-Server, der auf 127.0.0.1:9000 lauscht.
        #
        #Standort ~ \.php$ {
        #Wurzel-HTML;
        # fastcgi_pass 127.0.0.1:9000;
        # fastcgi_index index.php;
        # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
        #fastcgi_params einschließen;
        #}

        # Zugriff auf .htaccess-Dateien verweigern, wenn das Apache-Dokumentenstammverzeichnis
        # stimmt mit nginx überein
        #
        #Standort ~ /\.ht {
        # alles ablehnen;
        #}
    }

    Server {
       hören Sie 8086;
       hören Sie localhost:8086;
       Servername localhost;
       gzip an;
       gzip_puffer 4 16k;
       gzip_comp_level 6;
       gzip_vary ein;
       gzip_types Text/Klartext/CSS-Anwendung/JSON-Anwendung/X-Javascript-Anwendung/Javascript-Text/XML-Anwendung/XML-Anwendung/XML+RSS-Text/Javascript;

       Standort / {
           Stammverzeichnis D:/lokale-Site/guter-Test;
           Index Index.html Index.htm;
       }

       Standort ^~/api/ { 
           umschreiben ^~/api/(.*)$ /$1 break;
           Proxy-Passwort http://localhost:8080/; #Proxy-IP:Port}
    }

    # Hier werden HTTPS-Serverkonfiguration, Reverse-Proxy und Cross-Domain-Unterstützung verwendet. Achten Sie auf nginx und Backend-Dienste. Sie müssen Cross-Domain nur in nginx einstellen. Aktivieren Sie Cross-Domain nicht für Backend-Dienste. Wenn beide Seiten Cross-Domain aktivieren, treten Probleme auf#
    Server {
       hören Sie 443 SSL;
       Servername localhost;

       ssl_zertifikat test.crt;
       ssl_zertifikatsschlüssel test.schlüssel;

       ssl_session_cache geteilt:SSL:1m;
       SSL-Sitzungszeitüberschreitung 5 Min.

       ssl_ciphers HOCH:!aNULL:!MD5;
       ssl_prefer_server_ciphers ein;

    # Standort / {
    #Wurzel-HTML;
    # index.html index.htm;
    # }

       Standort / { 
        # neu schreiben ^~/api/(.*)$ /$1 break;
            # add_header Zugriffskontrolle-Origin zulassen *;
            # Client-Anforderungsmethoden zulassen add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, DELETE, PUT';
            # Vom Client übermittelte Anforderungsheader zulassen add_header 'Access-Control-Allow-Headers' 'Origin, x-requested-with, Content-Type, Accept, Authorization';
            # Clients das Senden von Cookies erlauben
            add_header 'Zugriffskontrolle-Anmeldeinformationen zulassen' 'true';
            # Clients den Zugriff auf die Antwortheader erlauben add_header 'Access-Control-Expose-Headers' 'Cache-Control, Content-Language, Content-Type, Expires, Last-Modified, Pragma';

            Proxy-Passwort http://10.114.119.61:8080;
            proxy_set_header X-Weitergeleitet-Für $proxy_add_x_forwarded_for;
            Proxy_set_header X-Weitergeleitet-Proto $scheme;
            proxy_set_header X-Weiterleitungsport $server_port;

            Proxy_Set_Header Host $host;
            Proxy_Set_Header X-Real-IP $Remote_Addr;
       }
    }

    Server {
       hören Sie 8443 SSL;
       Servername localhost;

       ssl_zertifikat test.crt;
       ssl_zertifikatsschlüssel test.schlüssel;

       ssl_session_cache geteilt:SSL:1m;
       SSL-Sitzungszeitüberschreitung 5 Min.

       ssl_ciphers HOCH:!aNULL:!MD5;
       ssl_prefer_server_ciphers ein;

    # Standort / {
    #Wurzel-HTML;
    # index.html index.htm;
    # }

       Standort / { 
        # neu schreiben ^~/api/(.*)$ /$1 break;
            # add_header Zugriffskontrolle-Origin zulassen $http_origin;
            # Client-Anforderungsmethoden zulassen add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, DELETE, PUT';
            # Vom Client übermittelte Anforderungsheader zulassen add_header 'Access-Control-Allow-Headers' 'Origin, x-requested-with, Content-Type, Accept, Authorization';
            # Clients das Senden von Cookies erlauben
            add_header 'Zugriffskontrolle-Anmeldeinformationen zulassen' 'true';
            # Clients den Zugriff auf die Antwortheader erlauben add_header 'Access-Control-Expose-Headers' 'Cache-Control, Content-Language, Content-Type, Expires, Last-Modified, Pragma';

            # Hiermit wird der Dienst konfiguriert, der den Proxy Proxy_Pass http://10.114.119.61:7001 erfordert.
            # Proxy-Passwort https://172.16.46.38:8443;
            # Proxy-Passwort http://10.114.119.61:8866;
            proxy_set_header X-Weitergeleitet-Für $proxy_add_x_forwarded_for;
            Proxy_set_header X-Weitergeleitet-Proto $scheme;
            proxy_set_header X-Weiterleitungsport $server_port;

            Proxy_Set_Header Host $host;
            Proxy_Set_Header X-Real-IP $Remote_Addr;
       }
    }

}

重啟nginx

Lokale Domänennamenkonfiguration

Öffnen Sie C:\Windows\System32\drivers\etc\hosts

Konfiguration hinzufügen:

10.114.119.61 pan.test.com
10.114.119.61 pan.uat.com

Dies ist das Ende dieses Artikels über die Verwendung von Nginx zum Konfigurieren eines https-Servers und eines Reverse-Proxys unter Windows. Weitere relevante Inhalte zum Konfigurieren eines https-Servers mit Nginx finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • Implementierung von HTTP- und HTTPS-Diensten mit Nginx-Reverse-Proxy für mehrere Domänennamen
  • Zwei Möglichkeiten zur Implementierung des Nginx https Reverse Proxy Tomcat
  • Beispiel für eine HTTPS-Konfigurationsmethode für den Nginx-Server
  • Detaillierte Erklärung zur korrekten Umleitung von Nginx-Server-HTTP auf HTTPS
  • Tutorial zum Erstellen eines Nginx-HTTP-Servers
  • Detaillierte Erläuterung der Konfiguration von HTTPS (NGINX) auf dem Alibaba Cloud LINUX-Server
  • So erstellen Sie einen HTTPS-Server mit Nginx und erzwingen den HTTPS-Zugriff

<<:  Stellen Sie das Vue-Projekt auf einem Linux-Server bereit

>>:  Beispiel für das Einfügen eines HTML-Bilds (html add image)

Artikel empfehlen

Lösung für leere Seite nach Vue-Verpackung

1. Lösung für das Problem, dass die Seite leer is...

Reines CSS, um einen bewölkten Wettersymboleffekt zu erzielen

Wirkung Die Wirkung ist wie folgt ​ Umsetzungside...

Häufige JavaScript-Speicherfehler und Lösungen

Inhaltsverzeichnis 1. Zeitüberwachung 2. Ereignis...

IE6/7 wird ein Chaos: Problem mit der Höhe leerer Textknoten

Vorwort: Verwenden Sie die Debugleiste, um den Dok...

Webdesign: Implementierungstechniken für Webmusik

<br />Wenn Sie Musik in eine Webseite einfüg...

MySQL verwendet UNIQUE, um das Einfügen nicht doppelter Daten zu implementieren

SQL UNIQUE-Einschränkung Die UNIQUE-Einschränkung...

Verwendung des Linux-Befehls tr

1. Einleitung tr wird verwendet, um einen Textabs...

Installations- und Verwendungsschritte für vue-amap

Ich habe zuvor die Verwendung des asynchronen Lad...

Docker stellt nginx bereit und mountet Ordner und Dateioperationen

Während dieser Zeit habe ich Docker studiert und ...

MySQL-Unterabfrage und Details zur Verknüpfungstabelle

Inhaltsverzeichnis 1. Was ist eine Unterabfrage? ...