![Kaip atspindėti „Android“ mobiliojo ekrano langą kompiuteryje](/f/83ec06e7aa90df97ab3357a543347577.jpg?width=100&height=100)
Šiame straipsnyje mes parodysime, kaip išspręsti „400 bloga užklausa: paprasta HTTP užklausa buvo išsiųsta į HTTPS prievadą“„ Nginx “HTTP serveryje. Ši klaida paprastai atsiranda, kai bandote sukonfigūruoti „Nginx“, kad jis apdorotų HTTP ir HTTPS užklausas.
Šiame vadove mes svarstome scenarijų, kai „nginx“ aptarnauja kelias svetaines, įgyvendintas naudojant serverio blokai (arba virtualūs kompiuteriai „Apache“) tik vienoje svetainėje naudojamas SSL, o kitose - ne.
Taip pat skaitykite: Galutinis „Nginx“ apsaugos, sukietėjimo ir našumo vadovas
Mes taip pat apsvarstysime SSL konfigūracijos pavyzdį (saugumo sumetimais pakeitėme tikrąjį domeno pavadinimą), kuris nurodo nginx klausytis abiejų prievadų 80 ir 443. Ir visos HTTP užklausos pagal numatytuosius nustatymus turėtų būti nukreiptos į HTTPS.
serveris {klausytis 80; serverio_pavardas example.com www.example.com; 301. kas yra https://www.example.com$request_uri; } serveris {klausytis 443 ssl http2; serverio_pavardas example.com www.example.com; root /var/www/html/example.com/; indeksas 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 sukonfigūruoja ssl; ssl_certificate /etc/ssl/certs/example_com_cert_chain.crt; ssl_certificate_key /etc/ssl/private/example_com.key; įtraukti /etc/nginx/ssl.d/ssl.conf; vieta / {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/; } # įgalioti PHP scenarijus „Apache“ klausantis 127.0.0.1:80 # #location ~ \ .php $ { # proxy_pass http://127.0.0.1; #} # perduoti PHP scenarijus FastCGI serveriui, klausantis 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; įtraukti/etc/nginx/fastcgi_params; } # uždrausti prieigą prie .htaccess failų, jei „Apache“ dokumento šaknis # sutampa su nginx viena # # vieta ~ /\.ht { # paneigti visus; #} }
Naudodamas aukščiau pateiktą konfigūraciją, kai klientas bando pasiekti jūsų svetainę per prievadą 80 t.y http://example.com
, atitinkama klaida bus rodoma, kaip nurodyta toliau pateiktoje ekrano kopijoje.
Jūs susiduriate su šia klaida, nes kiekvieną kartą, kai klientas bando pasiekti jūsų svetainę per HTTP, užklausa nukreipiama į HTTPS. Kadangi „nginx“ tikisi, kad operacijoje bus naudojamas SSL, tačiau pirminis reikalavimas (gautas per 80 prievadą) buvo paprastas HTTP, jis skundžiasi dėl klaidos.
Kita vertus, jei klientas naudoja https://example.com
, jie nesusidurs su aukščiau pateikta klaida. Be to, jei turite kitų svetainių, sukonfigūruotų nenaudoti SSL, „nginx“ pagal numatytuosius nustatymus bandys naudoti HTTPS, todėl atsiras aukščiau pateikta klaida.
Norėdami ištaisyti šią klaidą, pakomentuokite žemiau esančią eilutę savo konfigūracijoje arba išjunkite.
#ssl ARBA. ssl išjungtas.
Išsaugokite ir uždarykite failą. Tada iš naujo paleiskite „nginx“ paslaugą.
# systemctl iš naujo paleiskite „nginx“. ARBA. $ sudo systemctl iš naujo paleiskite nginx.
Tokiu būdu galite įgalinti „nginx“ tvarkyti HTTP ir HTTPS užklausas keliems serverio blokams.
Galiausiai, žemiau yra straipsnių apie SSL HTTPS nustatymą įprastuose „Linux“ platinimuose ir „FreeBSD“ sąrašas.
Tai kol kas viskas. Jei žinote kokį nors kitą šios klaidos sprendimo būdą, praneškite mums naudodami toliau pateiktą atsiliepimų formą.