15%

Economisește 15% la toate serviciile de găzduire

Testează-ți abilitățile și obține Reducere la orice plan de găzduire

Utilizați codul:

Skills
Începeți
01.11.2024

Cum să redirecționezi HTTP la HTTPS pe Linux cu Nginx (Ghid Complet)

Securizarea site-ului dvs. cu HTTPS nu mai este opțională — este o cerință fundamentală pentru protejarea datelor utilizatorilor, menținerea încrederii și obținerea unor clasamente SEO puternice. Motoarele de căutare precum Google penalizează activ site-urile HTTP neencriptate, în timp ce browserele moderne le marchează ca „Nu este sigur.” Redirecționarea întregului trafic HTTP la HTTPS asigură că fiecare vizitator ajunge la versiunea criptată a site-ului dvs. automat, fără nicio intervenție manuală.

Acest ghid cuprinzător vă ghidează prin întregul proces: înțelegerea diferenței dintre HTTP și HTTPS, instalarea unui certificat SSL gratuit prin Let’s Encrypt, configurarea unei redirecționări permanente 301 în Nginx și verificarea că totul funcționează corect pe serverul dvs. Linux.

Cuprins

  1. HTTP vs. HTTPS: Care este diferența?
  2. Cerințe preliminare
  3. Pasul 1: Instalați un certificat SSL cu Let’s Encrypt
  4. Pasul 2: Configurați Nginx pentru a redirecționa HTTP la HTTPS
  5. Pasul 3: Testați configurația Nginx
  6. Pasul 4: Reîncărcați Nginx pentru a aplica modificările
  7. Pasul 5: Verificați că redirecționarea funcționează
  8. Probleme comune și depanare
  9. Concluzie

1. HTTP vs. HTTPS: Care este diferența? {#http-vs-https}

Înainte de a intra în configurație, este important să înțelegeți de ce această redirecționare este importantă.

HTTP (Hypertext Transfer Protocol)

HTTP este protocolul fundamental utilizat pentru transmiterea datelor între un browser web și un server. Cu toate acestea, transmite toate datele în text simplu, ceea ce înseamnă că orice informație — credențiale de conectare, detalii de plată, date personale — poate fi interceptată de atacatori folosind un atac man-in-the-middle (MITM). HTTP nu oferă nicio garanție de criptare, autentificare sau integritate a datelor.

HTTPS (HTTP Secure)

HTTPS este extensia sigură a HTTP. Înfășoară protocolul HTTP standard în interiorul criptării SSL/TLS, creând un tunel criptat între client și server. Aceasta asigură:

  • Confidențialitate — Datele nu pot fi citite de terți în tranzit.
  • Integritate — Datele nu pot fi modificate în timpul transmisiei.
  • Autentificare — Utilizatorii pot verifica că comunică cu serverul legitim.
  • Avantaj SEO — Google folosește HTTPS ca semnal de clasament, oferind site-urilor sigure un avantaj măsurabil.
  • Încredere în browser — Chrome, Firefox și Edge afișează o pictogramă de lacăt pentru site-urile HTTPS și un avertisment „Nu este sigur” pentru site-urile HTTP.

Concluzia: rularea unui site web fără HTTPS în mediul actual este un risc grav de securitate și de afaceri.

2. Cerințe preliminare {#prerequisites}

Înainte de a urma acest ghid, asigurați-vă că aveți următoarele:

  • Un server Linux (Ubuntu 20.04/22.04, Debian 11/12 sau similar) care rulează Nginx
  • Un nume de domeniu înregistrat care indică adresa IP a serverului dvs.
  • Acces root sau sudo la serverul dvs.
  • Familiaritate de bază cu linia de comandă Linux

Dacă căutați un mediu de server fiabil pentru a găzdui site-ul dvs., Găzduire VPS de la AlexHost oferă planuri VPS Linux complet gestionate și negestionate, optimizate pentru aplicații web, cu stocare SSD și rețea de înaltă disponibilitate.

De asemenea, veți avea nevoie de un certificat SSL valid. Acest ghid folosește certificatul gratuit Let’s Encrypt al autorității de certificare prin Certbot. Dacă aveți nevoie de un certificat cu validare extinsă (EV) sau validat de organizație (OV) pentru utilizare în afaceri, luați în considerare explorarea Certificatelor SSL de la AlexHost.

3. Pasul 1: Instalați un certificat SSL cu Let’s Encrypt {#install-ssl}

Let’s Encrypt este o autoritate de certificare gratuită, automatizată și deschisă. Certbot este clientul oficial care automatizează procesul de obținere și reînnoire a certificatelor SSL/TLS de la Let’s Encrypt și configurarea serverului dvs. web.

Instalați Certbot și pluginul Nginx

Actualizați indexul pachetelor și instalați Certbot împreună cu pluginul Nginx:

sudo apt update
sudo apt install certbot python3-certbot-nginx -y

Obțineți și instalați certificatul SSL

Rulați Certbot cu steagul --nginx pentru a obține automat un certificat și a configura Nginx să îl utilizeze:

sudo certbot --nginx -d example.com -d www.example.com

Înlocuiți example.com cu numele dvs. de domeniu actual. Certbot va:

  1. Verifica proprietatea domeniului prin provocare ACME
  2. Obține un certificat semnat de la Let’s Encrypt
  3. Modifică automat configurația Nginx pentru a activa HTTPS pe portul 443
  4. Opțional, configurează redirecționarea automată HTTP-la-HTTPS (puteți sări peste acest pas în Certbot și să îl configurați manual așa cum se arată mai jos pentru control complet)

Activați reînnouirea automată a certificatului

Certificatele Let’s Encrypt expiră la fiecare 90 de zile. Certbot instalează un cronometru systemd sau o sarcină cron pentru a gestiona reînoirile automat. Verificați că este activ:

sudo systemctl status certbot.timer

De asemenea, puteți efectua un test de reînnoire în modul uscat:

sudo certbot renew --dry-run

4. Pasul 2: Configurați Nginx pentru a redirecționa HTTP la HTTPS {#configure-nginx}

Cu certificatul SSL instalat, trebuie acum să configurați Nginx pentru a redirecționa permanent tot traficul HTTP (portul 80) la HTTPS (portul 443). Aceasta se face folosind o redirecționare 301 Moved Permanently, care este tipul corect de redirecționare pentru SEO — transmite echitatea legăturii la versiunea HTTPS a paginilor dvs.

Deschideți fișierul de configurare al blocului serverului Nginx

Configurațiile site-ului Nginx sunt de obicei stocate în /etc/nginx/sites-available/. Deschideți fișierul de configurare pentru domeniul dvs.:

sudo nano /etc/nginx/sites-available/example.com

Configurați blocul de redirecționare HTTP-la-HTTPS

Fișierul dvs. de configurare va conține unul sau mai multe blocuri server. Localizați blocul care ascultă pe portul 80 (HTTP) și înlocuiți-l sau actualizați-l cu următoarea regulă de redirecționare:

server {
    listen 80;
    listen [::]:80;
    server_name example.com www.example.com;

    # Permanently redirect all HTTP requests to HTTPS
    return 301 https://$host$request_uri;
}

Blocul serverului HTTPS (portul 443), pe care Certbot probabil l-a configurat automat, ar trebui să arate similar cu acesta:

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name example.com www.example.com;

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

    root /var/www/example.com/html;
    index index.html index.php;

    location / {
        try_files $uri $uri/ =404;
    }
}

> De ce să folosiți return 301 în loc de rewrite?

> Directiva return 301 este mai rapidă și mai eficientă decât o regulă rewrite. Returnează imediat răspunsul de redirecționare fără a necesita Nginx să proceseze blocuri de locație suplimentare, reducând sarcina serverului și îmbunătățind timpul de răspuns.

Înțelegerea directivei de redirecționare

ComponentăExplicație
listen 80Nginx ascultă conexiunile de intrare pe portul HTTP 80
listen [::]:80Activează suportul IPv6 pe portul 80
server_nameDefinește la care nume de domeniu se aplică acest bloc
return 301Emite o redirecționare permanentă (cea mai bună pentru SEO)
https://$hostPăstrează numele gazdei original în redirecționare
$request_uriPăstrează calea URI originală completă și șirul de interogare

5. Pasul 3: Testați configurația Nginx {#test-nginx}

Nu reîncărcați sau reporniți niciodată Nginx fără a testa mai întâi configurația dvs. O eroare de sintaxă în fișierul dvs. de configurare va determina Nginx să nu pornească, luând site-ul dvs. offline.

Rulați testul de configurare încorporat al Nginx:

sudo nginx -t

Un test reușit produce următorul rezultat:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Dacă vedeți erori, examinați cu atenție rezultatul. Nginx va indica fișierul și numărul liniei în care a fost detectată problema. Problemele comune includ:

  • Punct și virgulă lipsă la sfârșitul directivelor
  • Acolade neînchise {}
  • Căi incorecte pentru certificatele SSL
  • Intrări duplicate server_name

Remediați orice erori raportate înainte de a continua.

6. Pasul 4: Reîncărcați Nginx pentru a aplica modificările {#reload-nginx}

Odată ce testul de configurare trece, reîncărcați Nginx pentru a aplica modificările dvs. Utilizarea reload în loc de restart este preferată deoarece aplică noua configurație ușor fără a abandona conexiunile active:

sudo systemctl reload nginx

Pentru a confirma că Nginx funcționează corect după reîncărcare:

sudo systemctl status nginx

Ar trebui să vedeți active (running) în rezultat.

7. Pasul 5: Verificați că redirecționarea funcționează {#verify-redirect}

Cu Nginx reîncărcat, este momentul să confirmați că redirecționarea funcționează corect.

Metoda 1: Test în browser

  1. Deschideți browserul web.
  2. Navigați la http://example.com (folosind HTTP, nu HTTPS).
  3. Observați că browserul vă redirecționează automat la https://example.com.
  4. Confirmați că pictograma lacătului apare în bara de adrese, indicând o conexiune SSL validă.

Metoda 2: Test din linia de comandă cu curl

Utilizați curl cu steagul -I pentru a prelua doar anteturile răspunsului HTTP fără a descărca corpul paginii:

curl -I http://example.com

O redirecționare configurată corect produce următorul răspuns:

HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Mon, 01 Jan 2025 12:00:00 GMT
Content-Type: text/html
Location: https://example.com/
Connection: keep-alive

Indicatori cheie de verificat:

  • Codul de stare 301 Moved Permanently — Confirmă că o redirecționare permanentă este în vigoare.
  • Location: https://example.com/ — Confirmă că traficul este redirecționat la versiunea HTTPS.

Metoda 3: Verificator de redirecționare online

De asemenea, puteți utiliza instrumente online gratuite, cum ar fi redirect-checker.org sau httpstatus.io, pentru a urmări lanțul complet de redirecționare și a confirma că nu există bucle de redirecționare sau salturi inutile.

8. Probleme comune și depanare {#troubleshooting}

Buclă de redirecționare

Simptom: Browserul afișează eroarea „Prea multe redirecționări”.

Cauză: Blocul serverului HTTPS declanșează și o redirecționare înapoi la HTTP, creând o buclă infinită.

Remediu: Asigurați-vă că directiva return 301 există doar în blocul HTTP (portul 80), nu în blocul HTTPS (portul 443).

Avertismente de conținut mixt

Simptom: Pictograma lacătului afișează un avertisment chiar și după ce redirecționarea funcționează.

Cauză: Paginile HTML încă fac referință la resurse HTTP (imagini, scripturi, foi de stil) folosind URL-uri http://.

Remediu: Actualizați toate URL-urile de resurse interne pentru a utiliza https:// sau URL-uri relative la protocol (//). Utilizați un plugin precum Really Simple SSL pentru site-urile WordPress.

Certificat SSL nu a fost găsit

Simptom: Nginx nu pornește cu o eroare despre fișiere de certificat lipsă.

Cauză: Căile specificate în ssl_certificate și ssl_certificate_key nu se potrivesc cu locațiile reale ale fișierelor de certificat.

Remediu: Verificați căile certificatului cu:

sudo ls /etc/letsencrypt/live/example.com/

Reînnouirea Certbot eșuează

Simptom: Reînnouirea automată eșuează cu o eroare de conexiune.

Cauză: Portul 80 poate fi blocat de un firewall, împiedicând provocarea HTTP-01 a Let’s Encrypt să se completeze.

Remediu: Asigurați-vă că portul 80 este deschis în firewall:

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw reload

9. Concluzie {#conclusion}

Redirecționarea HTTP la HTTPS pe serverul Linux folosind Nginx este o sarcină de configurare simplă, dar critic importantă. Prin implementarea unei redirecționări permanente 301, asigurați că fiecare vizitator — indiferent cum accesează site-ul dvs. — este servit automat cu versiunea criptată și sigură. Aceasta protejează datele sensibile ale utilizatorului,

15%

Economisește 15% la toate serviciile de găzduire

Testează-ți abilitățile și obține Reducere la orice plan de găzduire

Utilizați codul:

Skills
Începeți