|
I tempi sono in costante evoluzione e la nostra domanda di comunicazioni sicure è in aumento. In Discuz X3 si dice che https sia supportato, quindi dopo aver ottenuto il certificato SSL, ho aggiunto SSL al sito non appena l'ho ricevuto. Ma dopo averlo aggiunto, ho scoperto che molti posti non usavano link https, così ho iniziato a controllare il codice sorgente di Discuz per vedere cosa fosse andato storto. 1. Certificato SSL e configurazionePrima di tutto, per abilitare l'SSL, devi avere un certificato, giusto? Che sia emessa da un CA ordinario o firmata da se stessi, non è possibile non avere certezze. Se no, fai prima domanda per uno. (Per favore, cerca su Google il metodo specifico, non entrerò nei dettagli qui) 2、Discuz! Ottimizzato2.1. Aggiustamento della proceduraDa Discuz! X3 ha aggiunto il supporto per https, e se usi https per accedere al forum, i link nel forum diventeranno https. Se scopri che la maggior parte dei link usa già https, significa che Discuz lo ha riconosciuto automaticamente e puoi saltare questo passaggio e passare direttamente al successivo. Discuz usa $_SERVER['HTTPS'] per giudicare SSL, ma a causa del mio problema di architettura VPS (nginx+php-fpm), non può essere riconosciuto in questo modo, quindi devo apportare alcune modifiche al programma Discuz (usando $_SERVER['SERVER_PORT']). Fonte/Classe/Disposizione/discuz_application.php (circa riga 187): Scopri: - $_G['isHTTPS'] = ($_SERVER['HTTPS'] && strtolower($_SERVER['HTTPS']) != 'off') ? true : false;
Copia codiceModificato in: - $_G['isHTTPS'] = ($_SERVER['SERVER_PORT'] == 443 || $_SERVER['HTTPS'] && strtolower($_SERVER['HTTPS']) != 'off') ? true : false;
Copia codiceuc_server/avatar.php (approssimativamente riga 13): Scopri: - define('UC_API', strtolower(($_SERVER['HTTPS'] == 'on' ? 'https' : 'http').'://'.$_SERVER['HTTP_HOST'].substr($_SERVER['PHP_SELF'], 0, strrpos($_SERVER['PHP_SELF'], '/'))));
Copia codiceModificato in: - 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'], '/'))));
Copia codiceDopo la modifica, ho aggiornato la cache e ho scoperto che la maggior parte dei link è diventata https. 2.2. Impostazioni di backgroundCi sono anche impostazioni in background che possono interferire con l'uso di https In background, il >webmaster > UCenter imposta l'indirizzo di accesso > UCenter, che viene modificato per iniziare con https UCenter > Gestione delle Applicazioni > L'URL principale dell'applicazione viene modificato per iniziare con https Inoltre, alcune impostazioni in background > impostazioni globali > nomi di dominio potrebbero invalidare https; se hai seguito i passaggi precedenti e non riesci ancora ad attivarli, puoi eliminare temporaneamente le impostazioni qui per provare. 3. Svuota la cacheDopo aver completato le impostazioni, devi svuotare la cache affinché le impostazioni entrino in gioco. Pulisci la cache e la cache di memoria, e se imposti la post cache, devi pulire la cache nel database (svuotare il database corrispondente o aspettare che la cache guasti). A questo punto, Discuz https è abilitato con successo e, naturalmente, accedendo ad alcune pagine, il blocco può essere incrociato. Perché altri contenuti http vengono caricati nella pagina. Possono trattarsi di codici statistici, codici di condivisione QQ, avatar di QQ show, ecc., che al momento non forniscono protocollo https, quindi non possono essere abilitati. Aspetta solo che Discuz supporti ulteriormente https.
|