|
Czasy nieustannie się zmieniają, a nasze zapotrzebowanie na bezpieczną komunikację rośnie. W Discuz X3 jest powiedziane, że https jest obsługiwany, więc po otrzymaniu certyfikatu SSL dodałem SSL na stronę od razu, gdy go otrzymałem. Ale po dodaniu odkryłem, że wiele miejsc nie używa linków do https, więc zacząłem sprawdzać kod źródłowy Discuz, żeby zobaczyć, co poszło nie tak. 1. Certyfikat SSL i konfiguracjaPrzede wszystkim, aby włączyć SSL, musisz mieć certyfikat, prawda? Niezależnie od tego, czy jest wydany przez zwykłego CA, czy podpisany przez samą osobę, nie da się mieć pewności. Jeśli nie, najpierw złóż wniosek o taką aplikację. (Proszę, wyszukaj konkretną metodę w Google, nie będę tu wchodził w szczegóły) 2、Discuz! Optymalizacja2.1. Modyfikacja procedurZ Discuz! X3 dodało wsparcie dla https, a jeśli użyjesz https, aby uzyskać dostęp do forum, linki na forum staną się https. Jeśli zauważysz, że większość linków już korzysta z https, oznacza to, że Discuz automatycznie go rozpoznał i możesz pominąć ten krok i przejść od razu do następnego. Discuz używa $_SERVER['HTTPS'] do oceny SSL, ale z powodu mojego problemu z architekturą VPS (nginx+php-fpm) nie da się go rozpoznać w ten sposób, więc muszę wprowadzić pewne zmiany w programie Discuz (używając $_SERVER['SERVER_PORT']). źródło/klasa/discuz/discuz_application.php (ok. wers 187): Znajdź: - $_G['isHTTPS'] = ($_SERVER['HTTPS'] && strtolower($_SERVER['HTTPS']) != 'off') ? true : false;
Skopiuj kodZmodyfikowane do: - $_G['isHTTPS'] = ($_SERVER['SERVER_PORT'] == 443 || $_SERVER['HTTPS'] && strtolower($_SERVER['HTTPS']) != 'off') ? true : false;
Skopiuj koduc_server/avatar.php (około linia 13): Znajdź: - define('UC_API', strtolower(($_SERVER['HTTPS'] == 'on' ? 'https' : 'http').'://'.$_SERVER['HTTP_HOST'].substr($_SERVER['PHP_SELF'], 0, strrpos($_SERVER['PHP_SELF'], '/'))));
Skopiuj kodZmodyfikowane do: - 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'], '/'))));
Skopiuj kodPo modyfikacji zaktualizowałem pamięć podręczną i zauważyłem, że większość linków stała się https. 2.2. TłaSą też ustawienia w tle, które mogą kolidować z korzystaniem z https W tle >webmaster > UCenter ustawia adres dostępu > UCenter, który jest modyfikowany tak, aby zaczynał od https UCenter > Zarządzanie aplikacjami > Główny adres URL aplikacji jest modyfikowany tak, aby zaczynał się od https Dodatkowo, niektóre ustawienia w tle > globalnych > domen mogą również unieważniać https; jeśli wykonałeś wcześniejsze kroki i nadal nie możesz go włączyć, możesz tymczasowo usunąć ustawienia tutaj, aby spróbować. 3. Wyczyść pamięć podręcznąPo zakończeniu ustawień musisz wyczyścić pamięć podręczną, aby ustawienia zaczęły działać. Wyczyść pamięć podręczną i pamięć podręczną, a jeśli ustawisz pamięć post, musisz wyczyścić pamięć podręczną w bazie danych (opróżnić odpowiednią bazę cache albo poczekać, aż pamięć się nie uda). W tym momencie Discuz https jest pomyślnie włączony, a oczywiście przy dostępie do niektórych stron blokada może zostać przełamana. Ponieważ na stronie ładowana jest inna zawartość http. Mogą to być kody statystyczne, kody QQ do udostępniania, awatary QQ show itp., które na razie nie oferują protokołu https, więc nie można ich włączyć. Poczekaj tylko, aż Discuz będzie dalej wspierał https.
|