Correction de l'erreur «la demande http simple a été envoyée au port https» dans Nginx

Correction de l'erreur «la demande http simple a été envoyée au port https» dans Nginx

Dans cet article, nous montrerons comment résoudre le «400 Mauvaise demande: la demande HTTP simple a été envoyée au port HTTPS”Dans Nginx HTTP Server. Cette erreur se produit normalement lorsque vous essayez de configurer Nginx pour gérer les demandes HTTP et HTTPS.

Aux fins de ce guide, nous envisageons un scénario dans lequel Nginx sert plusieurs sites Web implémentés via des blocs de serveur (ou des hôtes virtuels dans Apache) Un seul site Web utilise SSL et le reste ne.

Lire aussi: Le guide ultime pour sécuriser, durcir et améliorer les performances de Nginx

Nous considérerons également l'exemple de configuration SSL ci-dessous (nous avons modifié le nom de domaine réel pour des raisons de sécurité), qui indique à Nginx d'écouter les deux port 80 et 443. Et toutes les demandes sur HTTP doivent être redirigées vers HTTPS par défaut.

Configuration de l'échantillon Nginx

Server écouter 80; Exemple de nom.com www.exemple.com; retour 301 https: // www.exemple.com $ request_uri;  Server écouter 443 SSL HTTP2; Exemple de nom.com www.exemple.com; root / var / www / html / exemple.com /; Index index.index PHP.index html.htm; #Charset KOI8-R; Access_log / var / log / nginx / exemple.com / exemple.com_access_log; error_log / var / log / nginx / exemple.com / exemple.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.clé; inclure / etc / nginx / ssl.d / ssl.conf; Emplacement / try_files $ uri $ uri / / index.php?$ query_string;  error_page 500 502 503 504 / 50X.html; Emplacement = / 50x.html root / var / www / html / exemple.com /;  # Proxy les scripts PHP à écouter Apache sur 127.0.0.1:80 # #Location ~ \.php $ # proxy_pass http: // 127.0.0.1; # # Passez les scripts PHP à FastCGI Server écoutant sur 127.0.0.1: 9000 # Emplacement ~ \.php $ root / var / www / html / exemple.com /; fastcgi_pass 127.0.0.1: 9001; #fastcgi_pass Unix: / var / run / php-fpm / php-fpm.chaussette; Index FastCGI_INDEX.PHP; fastcgi_param script_filename $ document_root $ fastcgi_script_name; Inclure FastCGI_PARAMS; include / etc / nginx / fastcgi_params;  # refuser l'accès à .Fichiers htaccess, si la racine du document d'Apache # concorde avec l'une # #location ~ / \.ht # nier tout; # 

En utilisant la configuration ci-dessus, une fois qu'un client essaie d'accéder à votre site via le port 80 je.e http: // Exemple.com, L'erreur en question sera affichée comme dans la capture d'écran suivante.

NGINX 404 Bad Request Error

Vous rencontrez cette erreur car chaque fois qu'un Clien essaie d'accéder à votre site via HTTP, la demande est redirigea vers HTTPS. C'est parce que le Nginx s'attend à ce que SSL soit utilisé dans la transaction, mais les demandes d'origine (reçues via le port 80) étaient simples HTTP, il se plaint avec l'erreur.

D'un autre côté, si un client utilise https: // exemple.com, Ils ne rencontreront pas l'erreur ci-dessus. De plus, si vous avez d'autres sites Web configurés pour ne pas utiliser SSL, Nginx essaiera d'utiliser HTTPS par défaut pour eux, ce qui entraîne l'erreur ci-dessus.

Pour corriger cette erreur, commentez la ligne ci-dessous dans votre configuration ou définissez-la sur OFF.

#SSL ON ou SSL OFF 

Enregistrez et fermez le fichier. Puis redémarrez le service nginx.

# SystemCTL Restart Nginx ou $ sudo systemctl redémarrer nginx 

De cette façon, vous pouvez permettre à Nginx de gérer les demandes HTTP et HTTPS pour plusieurs blocs de serveurs.

Enfin, ci-dessous une liste d'articles sur la mise en place de SSL HTTPS sur les distributions Linux Common et FreeBSD.

  1. Configuration de HTTPS avec Let's Encrypt Certificate SSL pour Nginx sur RHEL / CENTOS
  2. Sécuriser Nginx avec le certificat SSL gratuit, Let's Encrypt sur Ubuntu et Debian
  3. Comment sécuriser Nginx avec SSL et crypter dans FreeBSD

C'est tout pour le moment. Si vous connaissez une autre façon de résoudre cette erreur, veuillez nous en informer via le formulaire de rétroaction ci-dessous.