|
Waktu terus berkembang, dan permintaan kita akan komunikasi yang aman meningkat. Di Discuz X3, dikatakan bahwa https didukung, jadi setelah saya mendapatkan sertifikat SSL, saya menambahkan SSL ke situs web segera setelah saya mendapatkannya. Tetapi setelah menambahkannya, saya menemukan bahwa banyak tempat tidak menggunakan tautan https, jadi saya mulai memeriksa kode sumber Discuz untuk melihat apa yang salah. 1. Sertifikat & konfigurasi SSLPertama-tama, untuk mengaktifkan SSL, Anda harus memiliki sertifikat, bukan? Apakah itu dikeluarkan oleh CA biasa atau ditandatangani sendiri, tidak mungkin untuk tidak memiliki kepastian. Jika tidak, ajukan permohonan terlebih dahulu. (Silakan google metode spesifiknya, saya tidak akan membahas secara rinci di sini) 2、Diskusikan! Dioptimalkan2.1. Penyesuaian prosedurDari Diskus! X3 telah menambahkan dukungan untuk https, dan jika Anda menggunakan https untuk mengakses forum, tautan di forum akan menjadi https. Jika Anda menemukan bahwa sebagian besar tautan sudah menggunakan https, itu berarti Discuz telah mengenalinya secara otomatis, dan Anda dapat melewati langkah ini dan langsung ke langkah berikutnya. Discuz menggunakan $_SERVER['HTTPS'] untuk menilai SSL, tetapi karena masalah arsitektur VPS saya (nginx+php-fpm), itu tidak dapat dikenali dengan cara ini, jadi saya perlu membuat beberapa penyesuaian pada program Discuz (menggunakan $_SERVER['SERVER_PORT']). sumber/kelas/discuz/discuz_application.php (c. baris 187): Menemukan: - $_G['isHTTPS'] = ($_SERVER['HTTPS'] && strtolower($_SERVER['HTTPS']) != 'off') ? true : false;
Salin kodeDimodifikasi menjadi: - $_G['isHTTPS'] = ($_SERVER['SERVER_PORT'] == 443 || $_SERVER['HTTPS'] && strtolower($_SERVER['HTTPS']) != 'off') ? true : false;
Salin kodeuc_server/avatar.php (sekitar baris 13): Menemukan: - define('UC_API', strtolower(($_SERVER['HTTPS'] == 'on' ? 'https' : 'http').'://'.$_SERVER['HTTP_HOST'].substr($_SERVER['PHP_SELF'], 0, strrpos($_SERVER['PHP_SELF'], '/'))));
Salin kodeDimodifikasi menjadi: - 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'], '/'))));
Salin kodeSetelah modifikasi, saya memperbarui cache dan menemukan bahwa sebagian besar tautan menjadi https. 2.2. Pengaturan latar belakangAda juga pengaturan di latar belakang yang dapat mengganggu penggunaan https Di latar belakang, >webmaster > UCenter mengatur alamat akses UCenter >, yang dimodifikasi untuk dimulai dengan https UCenter > Manajemen Aplikasi > URL utama aplikasi dimodifikasi untuk dimulai dengan https Selain itu, beberapa pengaturan di latar belakang > pengaturan nama domain global > juga dapat membatalkan https, jika Anda telah mengambil langkah sebelumnya dan masih tidak dapat mengaktifkannya, Anda dapat menghapus pengaturan di sini untuk sementara untuk dicoba. 3. Hapus cacheSetelah pengaturan selesai, Anda perlu menghapus cache agar pengaturan diterapkan. Bersihkan cache dan cache memori, dan jika Anda mengatur cache posting, Anda perlu membersihkan cache di database (kosongkan database cache yang sesuai, atau tunggu hingga cache gagal). Pada titik ini, Diskusikan https berhasil diaktifkan, dan tentu saja, saat mengakses beberapa halaman, kunci dapat dilewati. Karena konten http lainnya dimuat di halaman. Mungkin kode statistik, kode berbagi QQ, avatar pertunjukan QQ, dll., yang tidak menyediakan protokol https untuk saat ini, sehingga tidak dapat diaktifkan. Tunggu saja Discuz untuk mendukung https lebih lanjut.
|