|
時代は常に変化しており、安全な通信への需要は高まっています。 Discuz X3ではhttpsがサポートされていると書かれているので、SSL証明書を受け取った後、すぐにウェブサイトにSSLを追加しました。 しかし追加してみると、多くの場所でhttpsリンクが使われていないことが分かり、何が間違っているのか調べるためにDiscuzのソースコードを確認し始めました。 1. SSL証明書と設定まず第一に、SSLを有効にするには証明書が必要ですよね? 通常のCAによって発行されたものであれ、本人が署名したものであれ、確実性がないことはありえません。 もしなければ、まず申請してください。 (具体的な方法はGoogleで調べてください。ここでは詳しくは触れません) 2、ディスカズ! 最適化済み2.1. 手順の調整ディスカズから! X3はhttpsのサポートを追加し、httpsを使ってフォーラムにアクセスすると、フォーラム内のリンクがhttpsになります。 もしほとんどのリンクがすでにhttpsを使っているなら、Discuzが自動的にそれを認識しているということで、このステップを飛ばして直接次のステップに進めます。 Discuzは$_SERVER['HTTPS']でSSLを判断しますが、VPSアーキテクチャの問題(nginx+php-fpm)でこの方法では認識できず、Discuzプログラムの調整が必要です($_SERVER['SERVER_PORT']を使います)。 出典/階級/ディスカズ/discuz_application.php(第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. キャッシュをクリアする設定が終わった後、設定を有効にするためにキャッシュをクリアする必要があります。 キャッシュとメモリキャッシュをクリーンアップし、ポストキャッシュを設定した場合は、対応するキャッシュデータベースを空にするか、キャッシュが失敗するまで待つ必要があります。 この時点でDiscuz httpsは正常に有効化されており、もちろん一部のページにアクセスする際にロックが突破される可能性があります。 なぜなら、他のhttpコンテンツがページに読み込まれているからです。 統計コード、QQ共有コード、QQショーアバターなどは、現時点でHTTPSプロトコルを提供していないため有効化できない場合があります。 Discuzがさらにサポートしてくれるのを待ってください https。
|