Detailliertes Tutorial zur Konfiguration von Docker nginx + https-Subdomains

Detailliertes Tutorial zur Konfiguration von Docker nginx + https-Subdomains

Heute habe ich zufällig einem Freund beim Umzug seines Servers geholfen und dabei die Grundausstattung des Servers konfiguriert, bin dabei jedoch auf einige Probleme gestoßen. Es stellt sich heraus, dass das aktuelle Google Chrome/Safari http zwangsweise in https konvertiert.

Ich wusste zunächst nicht, was los war und habe die Domänennamen-Einträge zurückgesetzt. Darüber hinaus kann der Domänenname beim Pingen erfolgreich in die Serveradresse aufgelöst werden. Daher habe ich meine Aufmerksamkeit auf den Prozess von http -> https gerichtet. Ich habe den integrierten Browser von WeChat verwendet und festgestellt, dass es möglich war, auf den http-Domänennamen zuzugreifen. Richten Sie also das Zertifikat ein.

Das Zertifikat, das ich hier verwende, ist ebenfalls das kostenlose acme.sh, das auf GitHub zu finden ist. Laden wir es zuerst herunter.

locken https://get.acme.sh | sh

Laden Sie dann Bash neu

Quelle ~/.bashrc

Zu diesem Zeitpunkt können Sie acme.sh --help eingeben, um die relevante Ausgabe deutlich anzuzeigen.

Konfigurieren Sie Acme

Nach Abschluss der Installation beginnen wir mit der Erstellung von Zertifikaten. Hier verwenden wir direkt die DNS-API, um die Domänennamenüberprüfung und andere Vorgänge abzuschließen.

Weitere Einzelheiten finden Sie unter dnsapi

Nehmen wir als Beispiel Godady

Legen Sie zunächst den Schlüssel und das Geheimnis in der Terminalkonfigurationsdatei fest (vom Dienstanbieter erhalten).

exportiere GD_Key="sdfsdfsdfljlbjkljlkjsdfoiwje"
exportiere GD_Secret="asdfsdfsdfdfdfdf"

Als nächstes geben wir direkt den Befehl ein

acme.sh --issue --dns dns_gd -d demo.com -d *.demo.com

Hier wird eine Zertifikatsdatei generiert. Normalerweise wird es unter /root/.acme.sh/xxx.com/xxx.com.cer gespeichert.

Um die Wartung unseres Docker-Volumes zu erleichtern, erstellen wir einen Ordner zum Speichern dieser Zertifikate

mkdir /opt/www/nginx/ssl

Geben Sie den Befehl erneut ein, um das Zertifikat im SSL-Verzeichnis abzulegen

acme.sh --install-cert -d demo.com \
--key-file /opt/www/nginx/ssl/demo.com.key \
--fullchain-file /opt/www/nginx/ssl/demo.com.crt\

Zu diesem Zeitpunkt können Sie zwei Dateien unter /opt/www/nginx/ssl sehen

An diesem Punkt ist die Konfiguration des Domänennamenzertifikats abgeschlossen. Dann konfigurieren wir docker-compose.yml

Erstellen von Containern mit Docker-Compose

Version: '3.5'
Leistungen:
 App:
  Bild: nginx:1.19.8
  Häfen:
   - 80:80
   -443:443
  Bände:
   - ./conf/nginx.conf:/etc/nginx/nginx.conf # Konfigurationsdatei - /opt/www:/opt/www # Projektverzeichnis - /opt/www/nginx/ssl:/opt/www/ssl # Zertifikatsdatei neu starten: immer
Netzwerke:
 Standard:
  Name: Standardnetzwerk

Nachdem wir die YML-Datei geschrieben haben, konfigurieren wir nginx. Bevor wir die nginx-Einstellungen konfigurieren, müssen wir zuerst die Schlüsselaustauschdatei DHE-Parameterdatei konfigurieren

openssl dhparam -out /opt/www/nginx/ssl/dhparam.pem 2048

Dann konfiguriere ich /.well-known/acme-challenge . Auf dieses Verzeichnis muss let's encrypt daher müssen wir dieses Verzeichnis zuerst konfigurieren.

Erstellen Sie zunächst ein Verzeichnis mkdir /opt/www/letsencrypt und konfigurieren Sie dann den folgenden Server in der nginx-Konfigurationsdatei

Server {
    hören Sie 80 Standardserver;
    hören Sie [::]:80 Standardserver;
    Servername _;

    Standort /.well-known/acme-challenge {
        root /opt/www/letsencrypt;
    }

    Standort / {
        gibt 301 https://$host$request_uri zurück;
    }
 }

Die obige Konfiguration leitet alle HTTP-Anfragen auf HTTPS um.

Dann konfigurieren wir unseren eigenen Domänennamen,

Server {
    hören Sie 443 SSL HTTP2 Standardserver;
    hören Sie [::]:443 ssl http2 Standardserver;

    Servername demo.com;

    Stammverzeichnis /opt/www/html;
    index.html index.htm index.php;

   # Diffie-Hellman-Schlüsselaustausch ssl_dhparam /opt/www/ssl/dhparam.pem;

    SSL-Protokolle TLSv1 TLSv1.1 TLSv1.2;
    SSL_CIPHERS 'ECDHE-ECDSA-CHACHA20-POLY1305: ECDHE-RSA-CHACHA20-Poly1305: ECDHE-ECDSA-AES128-GCM-SHA256: ECDHE-RSA-AES128-GCM-SHA256: ECDHE-ECDS256-RSA-AES256-GCM-SHA384: ECDHE-ECDS256-GCM-SHA384: ECDHE-ECDS256-GCM-SHA384: ECDHE-ECDS256: 384. ECDHE-ECDSA-AES256-SHA384: ECDHE-ECDSA-AES256-SHA: ECDHE-RSA-AES256-SHA: DHE-RSA-AES128-SHA256 -RSA-DES-CBC3-SHA: EDH-RSA-DES-CBC3-SHA: AES128-GCM-SHA256: AES256-GCM-SHA384: AES128-SHA256: AES256-SHA256: AES128-SHA: AES256-SHA: DES-CBC3-SHA:! DSS ';
    ssl_prefer_server_ciphers ein;

    ssl_session_cache gemeinsam genutzt: SSL: 50 m;
    SSL-Sitzungszeitüberschreitung 1d;


    #Zertifikatsdatei ssl_certificate /opt/www/ssl/demo.com.crt;
    SSL-Zertifikatsschlüssel /opt/www/ssl/demo.com.key;

    # HSTS-Preload-Unterstützung aktivieren add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"; 
    add_header X-Frame-Optionen SAMEORIGIN;
    add_header X-Inhaltstyp-Optionen nosniff;
    add_header X-XSS-Schutz "1; Modus=blockieren";

    Zugriffsprotokoll /var/log/nginx/demo.com.access.log;
    Fehlerprotokoll /var/log/nginx/demo.com.error.log;
 }

Wenn Subdomains konfiguriert werden müssen, kopieren Sie einfach die obige Konfiguration und ändern Sie diese Speicherorte. Andere Konfigurationen können unverändert bleiben. Der Domain Name Service Provider muss außerdem einen A-Record hinzufügen

Server {
    listen 443 ssl http2; #Beachten Sie, dass hier kein Standardserver vorhanden ist 
    listen [::]:443 ssl http2; #Beachten Sie, dass hier kein Standardserver vorhanden ist

    Servername example.demo.com; #Subdomäne Zugriffsprotokoll /var/log/nginx/example.demo.com.access.log;
    Fehlerprotokoll /var/log/nginx/example.demo.com.error.log;
 }

Die endgültige Nginx-Konfiguration lautet:

Ereignisse {
Arbeiterverbindungen 1024;
}

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

 sendfile an;

 Keepalive-Timeout 300;
 
 Server {
    hören Sie 80 Standardserver;
    hören Sie [::]:80 Standardserver;
    Servername _;

    Standort /.well-known/acme-challenge {
        root /opt/www/letsencrypt;
    }

    Standort / {
        gibt 301 https://$host$request_uri zurück;
    }
 }
 
 Server {
    hören Sie 443 SSL HTTP2 Standardserver;
    hören Sie [::]:443 ssl http2 Standardserver;

    Servername demo.com;

    Stammverzeichnis /opt/www/html;
    index.html index.htm index.php;

   # Diffie-Hellman-Schlüsselaustausch ssl_dhparam /opt/www/ssl/dhparam.pem;

    SSL-Protokolle TLSv1 TLSv1.1 TLSv1.2;
    SSL_CIPHERS 'ECDHE-ECDSA-CHACHA20-POLY1305: ECDHE-RSA-CHACHA20-Poly1305: ECDHE-ECDSA-AES128-GCM-SHA256: ECDHE-RSA-AES128-GCM-SHA256: ECDHE-ECDS256-RSA-AES256-GCM-SHA384: ECDHE-ECDS256-GCM-SHA384: ECDHE-ECDS256-GCM-SHA384: ECDHE-ECDS256: 384. ECDHE-ECDSA-AES256-SHA384: ECDHE-ECDSA-AES256-SHA: ECDHE-RSA-AES256-SHA: DHE-RSA-AES128-SHA256 -RSA-DES-CBC3-SHA: EDH-RSA-DES-CBC3-SHA: AES128-GCM-SHA256: AES256-GCM-SHA384: AES128-SHA256: AES256-SHA256: AES128-SHA: AES256-SHA: DES-CBC3-SHA:! DSS ';
    ssl_prefer_server_ciphers ein;

    ssl_session_cache gemeinsam genutzt: SSL: 50 m;
    SSL-Sitzungszeitüberschreitung 1d;


    #Zertifikatsdatei ssl_certificate /opt/www/ssl/demo.com.crt;
    SSL-Zertifikatsschlüssel /opt/www/ssl/demo.com.key;

    # HSTS-Preload-Unterstützung aktivieren add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"; 
    add_header X-Frame-Optionen SAMEORIGIN;
    add_header X-Inhaltstyp-Optionen nosniff;
    add_header X-XSS-Schutz "1; Modus=blockieren";

    Zugriffsprotokoll /var/log/nginx/demo.com.access.log;
    Fehlerprotokoll /var/log/nginx/demo.com.error.log;
 }

}

An diesem Punkt ist unsere Konfiguration im Wesentlichen abgeschlossen.

Führen Sie nun einfach den Befehl aus

docker-compose -f docker-compose.yml up -d

Sie können die +https-Multidomänennamenkonfiguration von nginx in Docker abschließen

Dies ist das Ende dieses Artikels über das ausführliche Tutorial zur Konfiguration von Docker Nginx + HTTPS-Subdomains. Weitere relevante Inhalte zur Konfiguration von Docker Nginx HTTPS finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • Verwenden Sie Docker, um Nginx zu installieren und Probleme und Lösungen zur Portweiterleitung zu konfigurieren
  • Docker stellt Nginx bereit und konfiguriert Reverse-Proxy
  • Starten Sie die auf Docker basierende nginxssl-Konfiguration
  • So stellen Sie nginx mit Docker bereit und ändern die Konfigurationsdatei
  • nginx generiert automatisch Konfigurationsdateien im Docker-Container
  • Detaillierte Erläuterung der Nginx-Plugin-Konfiguration und Dateien unter Docker

<<:  JavaScript implementiert den Div-Maus-Drag-Effekt

>>:  Fassen Sie einige allgemeine Prinzipien des Webdesigns und der Webproduktion zusammen

Artikel empfehlen

Detaillierte Erklärung des Lebenszyklus von Angular-Komponenten (Teil 2)

Inhaltsverzeichnis 1. Haken anzeigen 1. Was bei d...

Implementierung eines Puzzlespiels mit js

In diesem Artikel wird der spezifische Code von j...

js verwendet die Reduce-Methode, um Ihren Code eleganter zu gestalten

Vorwort In tatsächlichen Projekten kann die häufi...

Hinweise zur Adresszuordnung von Gerätetreibern im Linux-Kernel

#include <asm/io.h> #define ioremap(Cookie,...

Drei Methoden zum Ändern des Hostnamens von Centos7

Methode 1: Hostnamectl-Änderung Schritt 1 Überprü...

Beispiel für automatischen Stoppeffekt nach Text-Scrollen

Die Wirkung ist ganz einfach: Kopieren Sie einfach...

Implementierung der Installation von Docker in einer Win10-Umgebung

1. Rufen Sie die offizielle Docker-Website auf Ge...

So installieren und verwenden Sie Server-U Version 14

Einführung der Server-U-Software Server-U ist ein...

Detaillierte Erklärung zur Verwendung von MySQL mysqldump

1. Einführung in mysqldump mysqldump ist ein logi...

MySQL-Cursor-Prinzip und Analyse von Anwendungsbeispielen

Dieser Artikel erläutert anhand von Beispielen di...