Ein Wort vorab: Plötzlich erhielt ich die Aufgabe, den Zugriff mehrerer Domänennamen an https weiterzuleiten. Tatsächlich ist die Verwendung von Niginx sehr einfach und die Dokumentation ist auch vollständig (egal, ob es sich um Tencent Cloud oder Alibaba Cloud handelt). Der Grund dafür, dass ich in diese Falle getappt bin, war die Unkenntnis des Niginx-Servers und die Umwege, die ich gemacht habe. 1. Umweg: Tomcat unterstützt SSL Tencent Cloud Tomcat Server-Zertifikatkonfiguration Ändern der Datei server.xml <Anschluss Port="443" Protokoll="org.apache.coyote.http11.Http11NioProtocol" SSLEnabled="true" Schema="https" sicher="true" keystoreFile="conf\ssl\erstellter Zertifikatsname. Ich verwende einen relativen Pfad.jks" keystoreType="JKS" keystorePass="Zum Zertifikat gehörendes Passwort" clientAuth="false" sslProtocol="TLSv1+TLSv1.1+TLSv1.2" maxThreads="150" ciphers="TLS_RSA_MIT_AES_128_CBC_SHA,TLS_RSA_MIT_AES_256_CBC_SHA,TLS_ECDHE_RSA_MIT_AES_128_CBC_SHA,TLS_ECDHE_RSA_MIT_AES_128_CBC_SHA256,TLS_RSA_MIT_AES_128_CBC_SHA256,TLS_RSA_MIT_AES_256_CBC_SHA256"> </Anschluss> <!-- Definieren Sie einen AJP 1.3-Connector auf Port 8009 --> <Connector port="8209" protocol="AJP/1.3" redirectPort="8443" secretRequired="" useBodyEncodingForURI="true" URIEncoding="UTF-8"/> keystoreType="JKS": Bitte beachten Sie, dass sich diese Konfiguration von Alibaba Cloud unterscheidet. Denken Sie daran, sie zu ändern <Engine defaultHost="Mein Domänenname" name="Catalina" jvmRoute="tomcat1" URIEncoding="UTF-8"> <Cluster-Klassenname="org.apache.catalina.ha.tcp.SimpleTcpCluster"/> <Realm-Klassenname="org.apache.catalina.realm.LockOutRealm"> <Realm-Klassenname="org.apache.catalina.realm.UserDatabaseRealm" Ressourcenname="Benutzerdatenbank"/> </Reich> <Hostname="Mein Domänenname" appBase="webapps" unpackWARs="true" autoDeploy="true"> <Valve-Klassenname="org.apache.catalina.valves.AccessLogValve" Verzeichnis="Protokolle" Präfix="localhost_access_log" Suffix=".txt" Muster="%h %l %u %t "%r" %s %b" /> </Host> </Engine> Von meinen Kollegen habe ich gehört, dass man nur die Konfiguration braucht. Das gleiche passierte auch. Nachdem der Server gestartet war, war auch Port 443 belegt. Das war wirklich eine Falle. Wenn die Weiterleitung nicht benötigt wird, kann man die Konfiguration ändern. Beim Starten von nginx ist ein Fehler aufgetreten. bind() an 0.0.0.0:443 ist fehlgeschlagen (10013: Es wurde versucht, auf einen Socket auf eine Weise zuzugreifen, die durch seine Zugriffsberechtigungen verboten ist. 2. Kommen wir zurück zum Thema 2.1 Anforderungen im Überblick Wenn auf einem Server (der IP-Adresse des Tencent Cloud-Servers) mehrere Dienste bereitgestellt werden und auf verschiedene Dienste über unterschiedliche Domänennamen zugegriffen werden muss, kann die Domänennamenweiterleitung über einen Nginx-Proxy erfolgen und der https-Zugriff durch Konfigurieren des SSL-Moduls erreicht werden. (Mein Server verwendet das Windows-System. Wenn kein SSL-Modul vorhanden ist, müssen Sie es selbst aktivieren. Es wird standardmäßig unterstützt.) Stellen Sie drei Dienste gleichzeitig auf einem Server bereit: Dienst A, Dienst B und Dienst C. Die Dienste müssen mit den folgenden Domänennamen konfiguriert werden:
Der Zugriff auf den Dienst erfolgt über https und http-Anfragen werden auf https umgeleitet. 2.2 Service-Proxy-Einstellungen Konfigurieren Sie Nginx so, dass es auf Port 443 lauscht (== Ich steckte hier wegen der Tomcat-Konfiguration lange fest und es war erfolglos ==), implementieren Sie die Domänennamenweiterleitung und den https-Zugriff. Das in diesem Beispiel verwendete Zertifikat ist ein Zertifikat im CRT-Format (1) Konfiguration des Dienstes A Server { listen 443 ssl; #Abhörport, Nginx1.5 und höher empfehlen die Verwendung von server_name pangsir01.domain.com; #Domänennamen anfordern ssl_certificate ssl/Zertifikatname A.crt; #CRT-Zertifikatpfad, Speicherort Nginx‘ conf/ssl-Ordner, Sie können den absoluten Pfad verwenden ssl_certificate_key ssl/Zertifikatname A.key; #CRT-Zertifikatschlüsselpfad ssl_session_timeout 5m; #Sitzungstimeout ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; #Verschlüsselungsalgorithmus ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #SSL-Protokoll #Alle Anfragen abfangen location / { proxy_http_version 1.1; #vom Proxy verwendetes HTTP-Protokoll proxy_set_header Host $host; #Header fügt Host-Informationen der Anfrage hinzu proxy_set_header X-Real-IP $remote_addr; #Header fügt IP-Informationen der Anfragequelle hinzu proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # Proxy-Eintrag hinzufügen proxy_pass http://127.0.0.1:8001; #Zugriffsadresse von Dienst A} } (2) Konfiguration des Dienstes B Server { listen 443 ssl; #Abhörport, Nginx1.5 und höher empfehlen die Verwendung von server_name pangsir02.domain.com; #Domänennamen anfordern ssl_certificate ssl/Zertifikatname B.crt; #CRT-Zertifikatpfad, Speicherort Nginx‘ conf/ssl-Ordner, Sie können den absoluten Pfad verwenden ssl_certificate_key ssl/Zertifikatname B.key; #CRT-Zertifikatschlüsselpfad ssl_session_timeout 5m; #Sitzungstimeout ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; #Verschlüsselungsalgorithmus ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #SSL-Protokoll #Alle Anfragen abfangen location / { proxy_http_version 1.1; #vom Proxy verwendetes HTTP-Protokoll proxy_set_header Host $host; #Header fügt Host-Informationen der Anfrage hinzu proxy_set_header X-Real-IP $remote_addr; #Header fügt IP-Informationen der Anfragequelle hinzu proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # Proxy-Eintrag hinzufügen proxy_pass http://127.0.0.1:8002; #Zugriffsadresse für Dienst B} } (3) Konfiguration des Dienstes C Server { listen 443 ssl; #Abhörport, Nginx1.5 und höher empfehlen die Verwendung von server_name pangsir03.domain.com; #Domänennamen anfordern ssl_certificate ssl/Zertifikatname C.crt; #CRT-Zertifikatpfad, Speicherort Nginx‘ conf/ssl-Ordner, Sie können den absoluten Pfad verwenden ssl_certificate_key ssl/Zertifikatname C.key; #CRT-Zertifikatschlüsselpfad ssl_session_timeout 5m; #Sitzungstimeout ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; #Verschlüsselungsalgorithmus ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #SSL-Protokoll #Alle Anfragen abfangen location / { proxy_http_version 1.1; #vom Proxy verwendetes HTTP-Protokoll proxy_set_header Host $host; #Header fügt Host-Informationen der Anfrage hinzu proxy_set_header X-Real-IP $remote_addr; #Header fügt IP-Informationen der Anfragequelle hinzu proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # Proxy-Eintrag hinzufügen proxy_pass http://127.0.0.1:8003; #Zugriffsadresse für Dienst B} } 2.3 Automatische Weiterleitung von http-Anfragen Serverkonfiguration hinzufügen, Port 80 überwachen und alle Domänennamen auf https umleiten Server { listen 80; #Abhörport Servername a.domain.com b.domain.com c.domain.com; #Domänennamen anfordern return 301 https://$host$request_uri; #Umleitung zum https-Zugriff. } Meine Bedürfnisse werden hier erfüllt. Der folgende Inhalt ist erweiterter Inhalt. Bitte notieren Sie ihn. 3. SSL-Konfiguration für WebSocket Wenn WebSocket in Dienst A verwendet wird (die Zugriffsschnittstelle ist: /websocket), muss das WS-Protokoll durch das WSS-Protokoll ersetzt werden. Der Serverkonfiguration von Dienst A kann eine Standortkonfiguration hinzugefügt werden, um WebSocket für einen separaten Proxy abzufangen. Die Konfiguration von Dienst A nach der Änderung: Server { listen 443 ssl; #Abhörport Servername pangsir01.domain.com; #Domänenname anfordern ssl_certificate ssl/Zertifikatname A.crt; #CRT-Zertifikatpfad ssl_certificate_key ssl/Zertifikatname A.key; #CRT-Zertifikatschlüsselpfad ssl_session_timeout 5m; #Sitzungstimeout ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; #Verschlüsselungsalgorithmus ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #SSL-Protokoll #Alle Anfragen abfangen location / { proxy_http_version 1.1; #vom Proxy verwendetes HTTP-Protokoll proxy_set_header Host $host; #Header fügt Host-Informationen der Anfrage hinzu proxy_set_header X-Real-IP $remote_addr; #Header fügt IP-Informationen der Anfragequelle hinzu proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # Proxy-Eintrag hinzufügen proxy_pass http://127.0.0.1:8001; #Zugriffsadresse von Dienst A} #WebSocket-Anforderung abfangen Standort /websocket { Proxy-Passwort http://127.0.0.1:8001; Proxy_http_Version 1.1; Proxy_Set_Header-Upgrade $http_upgrade; proxy_set_header Verbindung "Upgrade"; } } Dies ist das Ende dieses Artikels über die Implementierung der Nginx-Domänennamenweiterleitung per https-Zugriff. Weitere relevante Inhalte zur Nginx-Domänennamenweiterleitung per https-Zugriff 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:
|
<<: So verwenden Sie MySQL „group by“ und „order by“ gemeinsam
>>: WeChat Mini-Programm Lotterienummerngenerator
Ich verfolge wochentags gerne die Nachrichten und ...
Ich habe zuvor einen Artikel über die Dateiübertr...
Verwandte Artikel: Installieren Sie Docker mit yu...
Fünf Verzögerungsmethoden für die MySQL-Zeitblind...
In diesem Artikel wird der spezifische Code für J...
Inhaltsverzeichnis 1. Kommentare zu MySQL-Primärs...
Ergebnisse erzielenAnforderungen/Funktionalität: ...
Die verständlichste Erklärung des Genauigkeitspro...
Inhaltsverzeichnis 1. Was ist ein Abschluss? 2. D...
MySQL-Sequenz AUTO_INCREMENT ausführliche Erkläru...
Möglicherweise sehen Sie häufig den folgenden Eff...
Ich habe vor Kurzem mein SQL-Lernen beendet und M...
Wir begegnen dieser Situation häufig bei der Fron...
login.html-Teil: <!DOCTYPE html> <html l...
1. Einleitung Wenn Sie früher einen bestimmten Te...