|
De tijden veranderen voortdurend en onze vraag naar veilige communicatie neemt toe. Op Discuz X3 staat dat https wordt ondersteund, dus nadat ik het SSL-certificaat had gekregen, heb ik SSL aan de website toegevoegd zodra ik het had. Maar nadat ik het had toegevoegd, ontdekte ik dat veel plekken geen https-links gebruikten, dus begon ik de broncode van Discuz te controleren om te zien wat er mis was gegaan. 1. SSL-certificaat & configuratieAllereerst, om SSL in te schakelen, moet je een certificaat hebben, toch? Of het nu door een reguliere CA is uitgegeven of door iemand zelf is ondertekend, het is niet mogelijk om geen zekerheid te hebben. Zo niet, solliciteer dan eerst voor een aanvraag. (Google alsjeblieft de specifieke methode, ik ga hier niet in detail treden) 2、Discuz! Geoptimaliseerd2.1. Procedure-aanpassingVan Discuz! X3 heeft ondersteuning toegevoegd voor https, en als je https gebruikt om toegang te krijgen tot het forum, worden de links in het forum https. Als je merkt dat de meeste links al https gebruiken, betekent dat dat Discuz het automatisch heeft herkend, en kun je deze stap overslaan en direct naar de volgende stap gaan. Discuz gebruikt $_SERVER['HTTPS'] om SSL te beoordelen, maar vanwege mijn VPS-architectuurprobleem (nginx+php-fpm) kan het op deze manier niet worden herkend, dus moet ik wat aanpassingen doen aan het Discuz-programma (met $_SERVER['SERVER_PORT']). Bron/klasse/discuz/discuz_application.php (c. regel 187): Vind: - $_G['isHTTPS'] = ($_SERVER['HTTPS'] && strtolower($_SERVER['HTTPS']) != 'off') ? true : false;
Code kopiërenAangepast tot: - $_G['isHTTPS'] = ($_SERVER['SERVER_PORT'] == 443 || $_SERVER['HTTPS'] && strtolower($_SERVER['HTTPS']) != 'off') ? true : false;
Code kopiërenuc_server/avatar.php (ongeveer regel 13): Vind: - define('UC_API', strtolower(($_SERVER['HTTPS'] == 'on' ? 'https' : 'http').'://'.$_SERVER['HTTP_HOST'].substr($_SERVER['PHP_SELF'], 0, strrpos($_SERVER['PHP_SELF'], '/'))));
Code kopiërenAangepast tot: - 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'], '/'))));
Code kopiërenNa de wijziging heb ik de cache bijgewerkt en ontdekte dat de meeste links https werden. 2.2. AchtergrondinstellingenEr zijn ook instellingen op de achtergrond die het gebruik van https kunnen verstoren Op de achtergrond stelt de >webmaster > UCenter het > UCenter-toegangsadres in, dat wordt aangepast om te beginnen met https UCenter > Application Management > De hoofd-URL van de applicatie wordt aangepast om te beginnen met https Daarnaast kunnen sommige instellingen op de achtergrond > globale > domeinnaaminstellingen https ongeldig maken; als je de eerdere stappen hebt gevolgd en het nog steeds niet kunt inschakelen, kun je de instellingen hier tijdelijk verwijderen om het te proberen. 3. Maak de cache leegNadat de instellingen zijn voltooid, moet je de cache wissen voordat de instellingen van kracht worden. Maak de cache en geheugencache schoon, en als je de postcache instelt, moet je de cache in de database opschonen (de bijbehorende cachedatabase leegmaken, of wachten tot de cache faalt). Op dit punt is Discuz https succesvol ingeschakeld, en natuurlijk kan bij het openen van sommige pagina's de vergrendeling worden gekruist. Omdat andere http-inhoud op de pagina wordt geladen. Het kunnen statistiekcodes zijn, QQ-delingscodes, QQ-show-avatars, enzovoort, die voorlopig geen https-protocol bieden, dus ze kunnen niet worden ingeschakeld. Wacht gewoon tot Discuz https verder ondersteunt.
|