|
Часи постійно змінюються, і наш попит на безпечне спілкування зростає. У Discuz X3 сказано, що підтримується https, тому після отримання SSL-сертифіката я додав SSL на сайт, щойно його отримав. Але після додавання я виявив, що багато місць не використовують https-посилання, тому почав перевіряти вихідний код Discuz, щоб побачити, що пішло не так. 1. SSL-сертифікат та конфігураціяПо-перше, щоб увімкнути SSL, потрібен сертифікат, так? Чи видано це звичайним CA, чи підписано самим — неможливо бути впевненим. Якщо ні, спочатку подайте заявку на таку програму. (Будь ласка, загуглите конкретний метод, я не буду тут вдаватися в подробиці) 2、Дискуз! Оптимізовано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.
|