Corregir el error “La solicitud HTTP simple se envió al puerto HTTPS” en Nginx

En este artículo, mostraremos cómo resolver la “ solicitud incorrecta 400: la solicitud HTTP simple se envió al puerto HTTPS. en el servidor HTTP Nginx. Este error normalmente surge cuando intenta configurar Nginx para manejar solicitudes HTTP y HTTPS.

Para el propósito de esta guía, estamos considerando un escenario en el que nginx está sirviendo varios sitios web implementados a través de bloques de servidor (o hosts virtuales en Apache) solo un sitio web usa SSL y el resto no.

Lea también. La guía definitiva para proteger, fortalecer y mejorar el rendimiento de Nginx

También consideraremos la configuración de SSL de muestra a continuación (hemos cambiado el nombre de dominio real por razones de seguridad), que le dice a nginx que escuche los puertos 80. y 443. Y todas las solicitudes en HTTP deben redirigirse a HTTPS de forma predeterminada.

Servidor de configuración de muestra de Nginx listen 80; nombre_servidor example.com www.example.com; return 301 https://www.example.com$request_uri; servidor {listen 443 ssl http2; nombre_servidor 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 configura ssl en; ssl_certificate/etc/ssl/certs/example_com_cert_chain.crt; ssl_certificate_key/etc/ssl/private/example_com.key; incluir/etc/nginx/ssl.d/ssl.conf; ubicación/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 de los scripts PHP para que Apache escuche en 127.0.0.1:80 # # ubicación ~ .php $ # proxy_pass http://127.0.0.1; # # pasar los scripts PHP al servidor FastCGI que escucha en 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 $ raíz_documento $ fastcgi_script_name; incluir fastcgi_params; incluir/etc/nginx/fastcgi_params; # denegar el acceso a los archivos .htaccess, si la raíz del # documento de Apache # coincide con la # # ubicación ~/.ht # de nginx # denegar todo; #

Con la configuración anterior, una vez que un cliente intenta acceder a su sitio a través del puerto 80. es decir, http://example.com, el error en cuestión se mostrará como en la siguiente pantalla. disparo.

 Error de solicitud incorrecta 404 de Nginx Error de solicitud incorrecta 404 de Nginx freestar.config.enabled_slots.push ( LocationName: “tecmint_incontent”, slotId: “tecmint_incontent”);

Se encuentra con este error porque cada vez que un cliente intenta acceder a su sitio a través de HTTP, la solicitud se redirige a HTTPS. Es porque nginx espera que se use SSL en la transacción, pero la solicitud original (recibida a través del puerto 80) era HTTP simple, se queja del error.

Por otro lado, si un cliente usa https://example.com, no encontrarán el error anterior. Además, si tiene otros sitios web configurados para no usar SSL, nginx intentará usar HTTPS de forma predeterminada para ellos, lo que dará como resultado el error anterior.

Para corregir este error, comente la línea a continuación en su configuración o desactívelo.

#ssl on O ssl off

Guarde y cierre el archivo. Luego reinicie el servicio nginx.

# systemctl restart nginx O $ sudo systemctl restart nginx

De esta manera, puede habilitar nginx para manejar solicitudes HTTP y HTTPS para múltiples bloques de servidor.

Finalmente, a continuación se muestra una lista de artículos sobre la configuración de SSL HTTPS en distribuciones comunes de Linux y FreeBSD.