Pag-ayo sa Ang yano nga HTTP nga hangyo gipadala sa HTTPS port Error sa Nginx
Niini nga artikulo, ipakita namo kung unsaon pagsulbad ang \400 Bad Request: Ang yano nga HTTP nga hangyo gipadala sa HTTPS port sa Nginx HTTP server. Kini nga sayup kasagarang motungha kung imong sulayan ang pag-configure sa Nginx aron pagdumala sa HTTP ug HTTPS nga mga hangyo.
Alang sa katuyoan niini nga giya, among gikonsiderar ang usa ka senaryo diin ang nginx nag-alagad sa daghang mga website nga gipatuman pinaagi sa mga virtual host sa Apache) usa ra ka website ang naggamit sa SSL ug ang uban wala.
Atong hisgotan usab ang sample SSL configuration sa ubos (among giusab ang aktuwal nga domain name alang sa mga rason sa seguridad), nga nagsulti sa nginx sa pagpaminaw sa duha ka port 80 ug 443. Ug ang tanan nga mga hangyo sa HTTP kinahanglan nga i-redirect sa HTTPS sa default.
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; #} }
Gamit ang konfigurasyon sa ibabaw, sa higayon nga ang usa ka kliyente mosulay sa pag-access sa imong site pinaagi sa port 80 i.e http://example.com
, ang sayop nga pangutana ipakita sama sa mosunod nga screen shot.
Nasugatan nimo kini nga sayup tungod kay sa matag higayon nga ang usa ka kliyente mosulay sa pag-access sa imong site pinaagi sa HTTP, ang hangyo gi-redirect sa HTTPS. Kini tungod kay ang nginx nagpaabut sa SSL nga gamiton sa transaksyon apan ang orihinal nga mga hangyo t (nadawat pinaagi sa port 80) kay yano nga HTTP, kini nagreklamo sa sayup.
Sa laing bahin, kung ang usa ka kliyente mogamit https://example.com
, dili nila masugatan ang sayup sa ibabaw. Dugang pa, kung ikaw adunay ubang mga website nga gi-configure nga dili mogamit sa SSL, ang nginx mosulay sa paggamit sa HTTPS nga default alang kanila nga miresulta sa sayup sa ibabaw.
Aron ayuhon kini nga sayop, ikomento ang linya sa ubos sa imong configuration o i-set kini sa off.
#ssl on OR ssl off
I-save ug isira ang file. Dayon i-restart ang serbisyo sa nginx.
# systemctl restart nginx OR $ sudo systemctl restart nginx
Niining paagiha, mahimo nimong palihokon ang nginx sa pagdumala sa HTTP ug HTTPS nga mga hangyo alang sa daghang mga bloke sa server.
Sa katapusan, sa ubos mao ang usa ka lista sa mga artikulo bahin sa pag-set up sa SSL HTTPS sa sagad nga mga distribusyon sa Linux ug FreeBSD.
- Pag-set up sa HTTPS gamit ang Let's Encrypt SSL Certificate Para sa Nginx sa RHEL/CentOS
- Secure Nginx nga Libre Let's Encrypt SSL Certificate sa Ubuntu ug Debian
- Unsaon Pag-secure sa Nginx gamit ang SSL ug Atong I-encrypt sa FreeBSD
Kana lang sa pagkakaron. Kung nahibal-an nimo ang bisan unsang paagi aron masulbad kini nga sayup, palihug ipahibalo kanamo pinaagi sa porma sa feedback sa ubos.