Beheben Sie Die einfache HTTP -Anforderung wurde an den HTTPS -Port Fehler in Nginx gesendet

Beheben Sie Die einfache HTTP -Anforderung wurde an den HTTPS -Port Fehler in Nginx gesendet

In diesem Artikel werden wir zeigen, wie man die “löst“400 schlechte Anfrage: Die einfache HTTP -Anfrage wurde an den HTTPS -Port gesendet”Auf Nginx HTTP -Server. Dieser Fehler tritt normalerweise auf.

Für den Zweck dieses Handbuchs betrachten wir ein Szenario, in dem Nginx mehrere Websites bedient, die über Serverblöcke (oder virtuelle Hosts in Apache) implementiert sind, nur eine Website verwendet SSL und der Rest nicht.

Lesen Sie auch: Der ultimative Leitfaden, um die Leistung von Nginx zu sichern, zu härten und zu verbessern

Wir werden auch die nachstehende Beispiel -SSL -Konfiguration in Betracht ziehen (wir haben den tatsächlichen Domänennamen aus Sicherheitsgründen geändert), wodurch Nginx beide Port anhören soll 80 Und 443. Und alle Anfragen auf HTTP sollten standardmäßig in HTTPS weitergeleitet werden.

Nginx -Beispielkonfiguration

Server Listen 80; server_name Beispiel.com www.Beispiel.com; Return 301 https: // www.Beispiel.com $ request_uri;  server listen 443 SSL http2; server_name Beispiel.com www.Beispiel.com; root/var/www/html/Beispiel.com/; Indexindex.PHP -Index.HTML -Index.HTM; #Charset Koi8-R; Access_log/var/log/nginx/Beispiel.com/Beispiel.com_access_log; Fehler_log/var/log/nginx/Beispiel.com/Beispiel.COM_ERROR_LOG ERROR; # SSL/TLS Configs SSL on; ssl_certificate/etc/ssl/certs/example_com_cert_chain.CRT; ssl_certificate_key/etc/ssl/privat/example_com.Taste; Inhaftieren/etc/nginx/ssl.D/SSL.conf; location / try_files $ uri $ uri / / Index.Php?$ query_string;  ERROR_PAGE 500 502 503 504 /50x.html; Position = /50x.html root/var/www/html/Beispiel.com/;  # Proxy die PHP -Skripte zum Apache -Hören auf 127.0.0.1:80 # #Location ~ \.php $  # proxy_pass http: // 127.0.0.1; # # Übergeben Sie die PHP -Skripte an den FastCGI -Server, der auf 127 gehört.0.0.1: 9000 # Standort ~ \.php $ root/var/www/html/Beispiel.com/; FASTCGI_PASS 127.0.0.1: 9001; #fastcgi_pass unix:/var/run/php-fpm/php-fpm.Socke; FASTCGI_INDEX INDEX.PHP; fastcgi_param script_filename $ document_root $ fastcgi_script_name; FASTCGI_PARAMS einschließen; include/etc/nginx/fastcgi_params;  # verweigern den Zugriff auf .HTaccess -Dateien, wenn das Dokumentroot von Apache mit dem Nginx -Eins # #Location ~ /\ übereinstimmt.ht  # alles; # 

Wenn ein Client mit der obigen Konfiguration versucht, über einen Port auf Ihre Website zuzugreifen 80 ich.e http: // Beispiel.com, Der fragliche Fehler wird wie im folgenden Screenshot angezeigt.

Nginx 404 schlechter Anforderungsfehler

Sie begegnen diesen Fehler, da jedes Mal, wenn ein Clien über http versucht, auf Ihre Website zuzugreifen. Dies liegt daran.

Andererseits, wenn ein Kunde verwendet https: // Beispiel.com, Sie werden nicht auf den obigen Fehler stoßen. Wenn Sie andere Websites für die Verwendung von SSL nicht konfigurieren haben, versucht NGINX, HTTPS standardmäßig für sie zu verwenden, was zum obigen Fehler entsteht.

Um diesen Fehler zu beheben, kommentieren Sie die folgende Zeile in Ihrer Konfiguration oder stellen Sie ihn auf OFF ein.

#SSL auf oder SSL aus 

Speichern und schließen Sie die Datei. Starten Sie dann den Nginx -Dienst neu.

# SystemCTL Neustart nginx oder $ sudo systemCTL Neustart nginx neu starten 

Auf diese Weise können Sie NGINX ermöglichen, sowohl HTTP- als auch HTTPS -Anforderungen für mehrere Serverblöcke zu verarbeiten.

Im Folgenden finden Sie eine Liste von Artikeln zum Einrichten von SSL HTTPS auf gemeinsamen Linux -Verteilungen und FreeBSD.

  1. Einrichten von HTTPS mit Let's Encrypt SSL -Zertifikat für Nginx auf RHEL/CentOS
  2. Secure Nginx mit kostenlosem SSL -Zertifikat auf Ubuntu und Debian verschlüsseln
  3. So sichern Sie Nginx mit SSL und lassen Sie uns in FreeBSD verschlüsseln

Das ist alles fürs Erste. Wenn Sie einen anderen Weg kennen, um diesen Fehler zu lösen, teilen Sie uns bitte das Feedback -Formular unten mit.