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 Konfigurieren Sie AcmeNach 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 Erstellen Sie zunächst ein Verzeichnis 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:
|
<<: JavaScript implementiert den Div-Maus-Drag-Effekt
>>: Fassen Sie einige allgemeine Prinzipien des Webdesigns und der Webproduktion zusammen
Inhaltsverzeichnis Überblick 1. Erfassung und Ver...
Einführung in die logische MySQL-Architektur Über...
Vorwort Unabhängig davon, ob es sich um eine eige...
Nach der Installation von MySQL geben Sie mysql -...
Die Implementierungsmethode gliedert sich in drei...
Eine Liste ist definiert als eine Text- oder Diag...
Bereitstellungsumgebung: Hier wird ein Docker-Con...
Der folgende Inhalt stellt den Prozess und die Lö...
Das Anzeigen und Interpretieren von Informationen...
Als ich ein WeChat-Applet-Projekt schrieb, gab es...
In der MySQL-Dokumentation können MySQL-Variablen...
Vorwort Ich glaube, dass jeder beim Erlernen von ...
1. Datensicherung 1. Verwenden Sie den Befehl mys...
MySQL 5.7.17, scheint jetzt die neueste Version z...
1. Erstellen Sie ein neues UI-Projekt Zunächst ei...