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.

  1. HTTPS opsetzen mat Let's Encrypt SSL Certificate For Nginx op RHEL/CentOS
  2. Séchert Nginx mat Free Let's Encrypt SSL Certificate op Ubuntu an Debian
  3. 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.