|
Timpurile evoluează constant, iar cererea noastră pentru o comunicare sigură este în creștere. În Discuz X3 se spune că https este suportat, așa că după ce am primit certificatul SSL, am adăugat SSL pe site imediat ce l-am primit. Dar după ce am adăugat-o, am descoperit că multe locuri nu foloseau linkuri https, așa că am început să verific codul sursă Discuz să văd ce a mers prost. 1. Certificat SSL și configurareÎn primul rând, pentru a activa SSL, trebuie să ai un certificat, nu? Indiferent dacă este emis de un CA obișnuit sau semnat de tine însuți, nu este posibil să nu existe certitudine. Dacă nu, aplică mai întâi pentru unul. (Vă rog să căutați pe Google metoda specifică, nu voi intra în detalii aici) 2、Discuz! Optimizat2.1. Ajustarea proceduriiDe la Discuz! X3 a adăugat suport pentru https, iar dacă folosești https pentru a accesa forumul, linkurile din forum vor deveni https. Dacă observi că majoritatea linkurilor folosesc deja https, înseamnă că Discuz l-a recunoscut automat și poți sări peste acest pas și să treci direct la următorul pas. Discuz folosește $_SERVER['HTTPS'] pentru a evalua SSL, dar din cauza problemei mele de arhitectură VPS (nginx+php-fpm), nu poate fi recunoscut astfel, așa că trebuie să fac unele ajustări la programul Discuz (folosind $_SERVER['SERVER_PORT']). Sursă/Clasă/Discuție/discuz_application.php (c. linia 187): Găsește: - $_G['isHTTPS'] = ($_SERVER['HTTPS'] && strtolower($_SERVER['HTTPS']) != 'off') ? true : false;
Cod de copiereModificat pentru: - $_G['isHTTPS'] = ($_SERVER['SERVER_PORT'] == 443 || $_SERVER['HTTPS'] && strtolower($_SERVER['HTTPS']) != 'off') ? true : false;
Cod de copiereuc_server/avatar.php (aprox. linia 13): Găsește: - define('UC_API', strtolower(($_SERVER['HTTPS'] == 'on' ? 'https' : 'http').'://'.$_SERVER['HTTP_HOST'].substr($_SERVER['PHP_SELF'], 0, strrpos($_SERVER['PHP_SELF'], '/'))));
Cod de copiereModificat pentru: - define('UC_API', strtolower(($_SERVER['SERVER_PORT'] == 443 || $_SERVER['HTTPS'] == 'on' ? 'https' : 'http').'://'.$_SERVER['HTTP_HOST'].substr($_SERVER['PHP_SELF'], 0, strrpos($_SERVER['PHP_SELF'], '/'))));
Cod de copiereDupă modificare, am actualizat cache-ul și am constatat că majoritatea linkurilor au devenit https. 2.2. Setări de fundalExistă și setări în fundal care pot interfera cu utilizarea https În fundal, >webmasterul > UCenter setează adresa de acces > UCenter, care este modificată să înceapă cu https UCenter > Management Aplicații > URL-ul principal al aplicației este modificat pentru a începe cu https În plus, unele setări din fundal > setări globale > nume de domeniu pot de asemenea invalida https; dacă ai urmat pașii anteriori și tot nu poți să-l activezi, poți șterge temporar setările de aici pentru a încerca. 3. Golește cache-ulDupă ce setările sunt finalizate, trebuie să golești cache-ul pentru ca acestea să intre în vigoare. Curăță cache-ul și memoria cache, iar dacă setezi post-cache-ul, trebuie să cureți cache-ul din baza de date (golești baza de date corespunzătoare sau aștepți ca cache-ul să cedeze). În acest moment, Discuz https este activat cu succes și, desigur, când accesezi anumite pagini, blocajul poate fi trecut. Pentru că alte conținuturi http sunt încărcate în pagină. Pot fi coduri statistice, coduri de partajare QQ, avatare de afișare QQ etc., care nu oferă protocolul https pentru moment, deci nu pot fi activate. Doar așteaptă ca Discuz să mai susțină https.
|