|
Tiderna förändras ständigt, och vår efterfrågan på säker kommunikation ökar. På Discuz X3 står det att https stöds, så efter att jag fått SSL-certifikatet lade jag till SSL på webbplatsen så fort jag fick det. Men efter att ha lagt till det upptäckte jag att många ställen inte använde https-länkar, så jag började kolla Discuz-källkoden för att se vad som gick fel. 1. SSL-certifikat och konfigurationFör det första, för att aktivera SSL måste du ha ett certifikat, eller hur? Om det utfärdas av en vanlig CA eller är undertecknat av en själv, är det omöjligt att vara osäker. Om inte, ansök om en först. (Vänligen googla den specifika metoden, jag kommer inte gå in på detaljer här) 2、Discuz! Optimerad2.1. Justering av procedurFrån Discuz! X3 har lagt till stöd för https, och om du använder https för att komma åt forumet blir länkarna i forumet https. Om du upptäcker att de flesta länkar redan använder https betyder det att Discuz automatiskt har känt igen det, och du kan hoppa över detta steg och gå direkt till nästa steg. Discuz använder $_SERVER['HTTPS'] för att bedöma SSL, men på grund av mitt VPS-arkitekturproblem (nginx+php-fpm) kan det inte kännas igen på detta sätt, så jag behöver göra några justeringar i Discuz-programmet (med $_SERVER['SERVER_PORT']). källa/klass/discuz/discuz_application.php (ca rad 187): Hitta: - $_G['isHTTPS'] = ($_SERVER['HTTPS'] && strtolower($_SERVER['HTTPS']) != 'off') ? true : false;
Kopiera kodenModifierad till: - $_G['isHTTPS'] = ($_SERVER['SERVER_PORT'] == 443 || $_SERVER['HTTPS'] && strtolower($_SERVER['HTTPS']) != 'off') ? true : false;
Kopiera kodenuc_server/avatar.php (ungefär rad 13): Hitta: - define('UC_API', strtolower(($_SERVER['HTTPS'] == 'on' ? 'https' : 'http').'://'.$_SERVER['HTTP_HOST'].substr($_SERVER['PHP_SELF'], 0, strrpos($_SERVER['PHP_SELF'], '/'))));
Kopiera kodenModifierad till: - 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'], '/'))));
Kopiera kodenEfter ändringen uppdaterade jag cachen och upptäckte att de flesta länkarna blev https. 2.2. BakgrundsinställningarDet finns också inställningar i bakgrunden som kan störa användningen av https I bakgrunden ställer >webbmastern > UCenter in > UCenter-åtkomstadressen, som ändras till att börja med https UCenter > Application Management > Huvudadressen till applikationen ändras till att börja med https Dessutom kan vissa inställningar i bakgrunden > globala > domännamnsinställningar också ogiltigförklara https, om du har tagit de tidigare stegen och fortfarande inte kan aktivera det kan du tillfälligt radera inställningarna här för att prova. 3. Rensa cachenNär inställningarna är klara behöver du rensa cachen för att de ska träda i kraft. Rensa cachen och minnescachen, och om du sätter postcachen måste du rensa cachen i databasen (tömma motsvarande cachedatabas eller vänta tills cachen misslyckas). Vid denna punkt är Discuz https framgångsrikt aktiverad, och naturligtvis kan låset korsas när man kommer åt vissa sidor. För att annat http-innehåll laddas in på sidan. Det kan vara statistikkoder, QQ-delningskoder, QQ-visa-avatarer, etc., som för tillfället inte tillhandahåller https-protokoll, så de kan inte aktiveras. Vänta bara på att Discuz ska fortsätta stödja https.
|