Corrija o erro “A solicitação HTTP simples foi enviada para a porta HTTPS” no nginx
- 4307
- 1081
- Ms. Travis Schumm
Neste artigo, mostraremos como resolver o “400 Pedido ruim: a solicitação HTTP simples foi enviada para a porta HTTPS”No servidor HTTP nginx. Este erro normalmente surge quando você tenta configurar o Nginx para lidar com as solicitações HTTP e HTTPS.
Para os fins deste guia, estamos considerando um cenário no qual o Nginx está servindo a vários sites implementados por meio de blocos de servidores (ou hosts virtuais no Apache), apenas um site usa SSL e o resto não.
Leia também: O Guia final para proteger, endurecer e melhorar o desempenho do nginx
Também consideraremos a configuração do SSL da amostra abaixo (mudamos o nome de domínio real por razões de segurança), que diz ao Nginx para ouvir ambas as portas 80 e 443. E todos os pedidos no HTTP devem ser redirecionados para HTTPS por padrão.
Configuração da amostra nginx
servidor ouça 80; Exemplo server_name.com www.exemplo.com; retornar 301 https: // www.exemplo.com $ request_uri; servidor Ouça 443 SSL HTTP2; Exemplo server_name.com www.exemplo.com; root/var/www/html/exemplo.com/; ÍNDICE ÍNDICE.ÍNDICE PHP.Índice HTML.htm; #charset koi8-r; access_log/var/log/nginx/exemplo.com/exemplo.com_access_log; error_log/var/log/nginx/exemplo.com/exemplo.Erro com_error_log; # SSL/TLS configura SSL ON; ssl_certificate/etc/ssl/certs/exemplo_com_cert_chain.CRT; ssl_certificate_key/etc/ssl/privado/exemplo_com.chave; incluir/etc/nginx/ssl.d/ssl.conf; Localização / Try_files $ URI $ URI / / ÍNDICE.php?$ query_string; error_page 500 502 503 504 /50x.html; Localização = /50x.html root/var/www/html/exemplo.com/; # Proxy Os scripts PHP para ouvir Apache em 127.0.0.1:80 # #location ~ \.php $ # proxy_pass http: // 127.0.0.1; # # Passe os scripts PHP para o servidor FastCGI ouvindo em 127.0.0.1: 9000 # Localização ~ \.php $ root/var/www/html/exemplo.com/; fastcgi_pass 127.0.0.1: 9001; #fastcgi_pass unix:/var/run/php-fpm/php-fpm.meia; Índice FastCGI_Index.php; fastcgi_param script_filename $ document_root $ fastcgi_script_name; incluir fastcgi_params; incluir/etc/nginx/fastcgi_params; # negar acesso a .Arquivos Htaccess, se o documento do Apache # concordar com o # # #location # /\ da nginx ~ /\.ht # negar tudo; #
Usando a configuração acima, uma vez que um cliente tenta acessar seu site via porta 80 eu.e http: // Exemplo.com
, O erro em questão será exibido como na captura de tela a seguir.
Você encontra esse erro porque toda vez que um clien tenta acessar seu site via http, a solicitação é redirecionada para https. É porque o nginx espera que o SSL seja usado na transação, mas o requisito original (recebido pela porta 80) foi simples http, que se queixa com o erro.
Por outro lado, se um cliente usar https: // Exemplo.com
, Eles não encontrarão o erro acima. Além disso, se você tiver outros sites configurados para não usar o SSL, o nginx tentará usar o HTTPS por padrão para eles, resultando no erro acima.
Para corrigir este erro, comente a linha abaixo em sua configuração ou defina -o como OFF.
#SSL ON ou SSL OFF
Salve e feche o arquivo. Em seguida, reinicie o serviço Nginx.
# SystemCtl Reiniciar nginx ou $ sudo systemctl reiniciar nginx
Dessa forma, você pode permitir que o Nginx lide com solicitações HTTP e HTTPS para vários blocos de servidor.
Finalmente, abaixo está uma lista de artigos sobre a criação de SSL HTTPS em distribuições de Linux Common e FreeBSD.
- Configurando HTTPS com o certificado Let's Encrypt SSL para Nginx no RHEL/CENTOS
- Segure o Nginx com o certificado SSL Let Free Crypts no Ubuntu e Debian
- Como proteger o nginx com SSL e vamos criptografar em FreeBSD
É tudo por agora. Se você souber de outra maneira de resolver este erro, informe -nos através do formulário de feedback abaixo.
- « Como instalar e usar o Sublime Text Editor no Linux
- Como corrigir “Erro de manipulação do token de autenticação Passwd »