Fix Déi einfach HTTP-Ufro gouf op den HTTPS Hafen geschéckt Feeler am Nginx
An dësem Artikel wäerte mir weisen wéi Dir d'400 Bad Request: The plain HTTP request was sent to HTTPS port in Nginx HTTP Server léisen. Dëse Feeler entsteet normalerweis wann Dir probéiert Nginx ze konfiguréieren fir souwuel HTTP wéi HTTPS Ufroen ze handhaben.
Fir den Zweck vun dësem Guide betruechte mir e Szenario an deem nginx verschidde Websäite servéiert déi duerch virtuell Hosten an Apache implementéiert ginn) nëmmen eng Websäit benotzt SSL an de Rescht net.
Mir wäerten och d'Probe SSL Konfiguratioun hei drënner berücksichtegen (mir hunn den aktuellen Domain Numm aus Sécherheetsgrënn geännert), déi nginx seet fir souwuel de Port 80 an 443 ze lauschteren.
server{ listen 80; server_name example.com www.example.com; return 301 https://www.example.com$request_uri; } server { listen 443 ssl http2; server_name example.com www.example.com; root /var/www/html/example.com/; index index.php index.html index.htm; #charset koi8-r; access_log /var/log/nginx/example.com/example.com_access_log; error_log /var/log/nginx/example.com/example.com_error_log error; # SSL/TLS configs ssl on; ssl_certificate /etc/ssl/certs/example_com_cert_chain.crt; ssl_certificate_key /etc/ssl/private/example_com.key; include /etc/nginx/ssl.d/ssl.conf; location / { try_files $uri $uri/ /index.php?$query_string; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /var/www/html/example.com/; } # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ \.php$ { # proxy_pass http://127.0.0.1; #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # location ~ \.php$ { root /var/www/html/example.com/; fastcgi_pass 127.0.0.1:9001; #fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; include /etc/nginx/fastcgi_params; } # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # #location ~ /\.ht { # deny all; #} }
Mat der uewe genannter Konfiguratioun, eemol e Client probéiert op Äre Site iwwer den Hafen 80 ze kommen, dh http://example.com
, gëtt de betreffend Feeler ugewisen wéi an der folgender Screenshot.
Dir begéint dëse Feeler well all Kéier wann e Client probéiert op Är Site iwwer HTTP ze kommen, gëtt d'Ufro op HTTPS ëmgeleet. Et ass well den nginx erwaart datt SSL an der Transaktioun benotzt gëtt, awer déi ursprénglech Ufro t (empfaang iwwer Port 80) war einfach HTTP, et beschwéiert sech mam Feeler.
Op der anerer Säit, wann e Client https://example.com
benotzt, stinn se net op deen uewe genannte Feeler. Zousätzlech, wann Dir aner Websäite konfiguréiert hutt fir net SSL ze benotzen, wäert nginx probéieren HTTPS als Standard fir si ze benotzen, wat zum uewe genannte Feeler resultéiert.
Fir dëse Feeler ze fixéieren, kommentéiert d'Linn hei ënnen an Ärer Konfiguratioun oder setzt se aus.
#ssl on OR ssl off
Späichert an zou der Datei. Da starten den nginx Service nei.
# systemctl restart nginx OR $ sudo systemctl restart nginx
Op dës Manéier kënnt Dir nginx aktivéieren fir béid HTTP an HTTPS Ufroe fir verschidde Serverblocken ze handhaben.
Endlech, hei ënnen ass eng Lëscht vun Artikelen iwwer d'Astellung vun SSL HTTPS op gemeinsame Linux Verdeelungen a FreeBSD.
- HTTPS opsetzen mat Let's Encrypt SSL Certificate For Nginx op RHEL/CentOS
- Séchert Nginx mat Free Let's Encrypt SSL Certificate op Ubuntu an Debian
- Wéi Séchert Nginx mat SSL a Loosst eis am FreeBSD verschlësselen
Dat ass alles fir elo. Wann Dir wësst iwwer eng aner Manéier fir dëse Feeler ze léisen, loosst eis w.e.g. iwwer de Feedbackformular hei drënner wëssen.