|
Времената постоянно се променят, а нашето търсене на сигурна комуникация нараства. В Discuz X3 се казва, че https се поддържа, затова след като получих SSL сертификата, добавих SSL към сайта веднага щом го получих. Но след като го добавих, установих, че много места не използват https линкове, затова започнах да проверявам изходния код на Discuz, за да видя какво се е объркало. 1. SSL сертификат и конфигурацияПърво, за да активираш SSL, трябва да имаш сертификат, нали? Дали е издадена от обикновен CA или подписана от самия вас, не е възможно да се има сигурност. Ако не, първо кандидатствай за такъв. (Моля, потърсете конкретния метод в Google, няма да навлизам в подробности тук) 2、Discuz! Оптимизиран2.1. Корекция на процедуритеОт Discuz! X3 добави поддръжка за https, а ако използвате https за достъп до форума, връзките във форума ще станат https. Ако установите, че повечето връзки вече използват https, това означава, че Discuz го е разпознал автоматично и можете да пропуснете тази стъпка и да преминете директно към следващата. Discuz използва $_SERVER['HTTPS'] за оценка на SSL, но поради проблема ми с архитектурата на VPS (nginx+php-fpm) не може да бъде разпознат по този начин, затова трябва да направя някои корекции в програмата Discuz (използвайки $_SERVER['SERVER_PORT']). източник/клас/дискузия/discuz_application.php (c. ред 187): Открийте: - $_G['isHTTPS'] = ($_SERVER['HTTPS'] && strtolower($_SERVER['HTTPS']) != 'off') ? true : false;
Копирай кодМодифицирано на: - $_G['isHTTPS'] = ($_SERVER['SERVER_PORT'] == 443 || $_SERVER['HTTPS'] && strtolower($_SERVER['HTTPS']) != 'off') ? true : false;
Копирай кодuc_server/avatar.php (приблизително ред 13): Открийте: - define('UC_API', strtolower(($_SERVER['HTTPS'] == 'on' ? 'https' : 'http').'://'.$_SERVER['HTTP_HOST'].substr($_SERVER['PHP_SELF'], 0, strrpos($_SERVER['PHP_SELF'], '/'))));
Копирай кодМодифицирано на: - 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'], '/'))));
Копирай кодСлед модификацията обнових кеша и установих, че повечето връзки станаха https. 2.2. Фонови настройкиИма и настройки на заден план, които могат да пречат на използването на https На заден план >уебмастърът > UCenter задава адреса за достъп > UCenter, който се модифицира, за да започва с https UCenter > Управление на приложения > Основният URL адрес на приложението се променя, за да започва с https Освен това, някои настройки във фонов режим > глобални > домейн имена също могат да анулират https, ако сте направили предишните стъпки и все още не можете да го активирате, можете временно да изтриете настройките тук, за да опитате. 3. Изчистете кешаСлед като настройките са завършени, трябва да изчистите кеша, за да подействат настройките. Почистете кеша и кеша на паметта, и ако зададете post cache, трябва да почистите кеша в базата данни (изпразните съответната кеш база данни или изчакайте кешът да се повреди). В този момент Discuz https е успешно активиран и, разбира се, при достъп до някои страници заключването може да бъде прекрачено. Защото друго http съдържание се зарежда в страницата. Може да са статистически кодове, QQ кодове за споделяне, QQ шоу аватари и др., които засега не предоставят https протокол, така че не могат да бъдат активирани. Просто изчакай Discuz да поддържа допълнително https.
|