さくらのレンタルサーバーでSSL化対応(http→https)する際に注意点と対処法

さくらのレンタルサーバーでSSL化対応(http→https)する際に注意点と対処法
2017年12月16日2023年11月05日

さくらインターネットでも無料SSL証明書「Let’s Encrypt」が利用できるようになり、使い勝手がよくなってきているサーバーですが、WordpressをSSL化対応(http→https)する際に注意すべき点があるのでまとめてみました。

さくらのレンタルサーバーのHTTPS接続の仕様について

さくらのレンタルサーバーは、リバースプロキシによるHTTPS接続になっているため、SSL化することで他のサーバーと挙動が違ってきます。

「さくらのレンタルサーバ」にて提供しているウェブサーバ (Apache) は、
80番ポートを使用するものと、443番ポートを使用するものとの 2種類に分けられます。
一般的に、80番ポートは「http://」、443番ポートは「https://」という形式でアクセスされ、
「https://」についてはプロクシとして動作します。
そのため、同じディレクトリへのアクセスであっても、その際に呼び出されるウェブサーバ が異なると、
CGIプログラムやウェブサーバが.htaccessなどのファイルを読み込む際、挙動に違いが生じます。
例えば、HTTPとしてアクセスした場合はお手元のコンピュータが、
HTTPSとしてアクセスした場合はサーバそのものがアクセス元となります。

 引用:SSL利用時の注意点

リバースプロキシによるHTTPS接続の影響

通常であれば、httpsに変更してWEBアクセスすると、httpsとしてプログラムが動作しますが、リバースプロキシがあることで、実際に動作するサーバーはhttpsでWEBアクセスしてもhttpとして動作してしまいます。

.htaccessでRewriteCond %{HTTPS}で書かれている場合や、PHPの「$_SERVER['HTTPS']」で書かれているプログラムはhttpsにしてもfalseが返ってしまい判定が正常にできません。

なので、httpsにドメインを統一しようとした時、httpからhttpsにリダイレクトを使用とした場合、無限ループが発生する場合があります。

[ads]

対処方法

.htaccessの修正

.htaccessファイルを修正します。下記の記述は、httpでアクセスされた場合httpsにリダイレクトさせる記述になります。

RewriteEngine On
RewriteCond %{HTTP:X-Sakura-Forwarded-For} ^$
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

※「RewriteCond %{HTTP:X-Sakura-Forwarded-For} ^$」はさくらのレンタルサーバー独自な記述です。これが無いと無限ループになります。

共通プログラムに追加修正

次に共通処理部分に下記を追加いします。

if( isset($_SERVER['HTTP_X_SAKURA_FORWARDED_FOR']) ) {
    // ↓ご自身のドメインに書き換え
    $_host = 'www.example.com';
    $_SERVER['HTTPS'] = 'on';
    $_ENV['HTTPS'] = 'on';
    $_SERVER['HTTP_HOST'] = $_host;
    $_SERVER['SERVER_NAME'] = $_host;
    $_ENV['HTTP_HOST'] = $_host;
    $_ENV['SERVER_NAME'] = $_host;
}

Wordpressの場合、設定ファイルであるwp-config.phpの先頭行に記述すると良いです。

WordPressはさくらが提供しているプラグインを使おう

手っ取り早く設定を変更したい場合や、サーバー独自のプログラムを書きたくない場合は、さくらが提供しているプラグインを使いましょう。

詳細は下記にまとめています。WordPressの設定を変更するを参考にしてみてください。

[kanren postid="161"]

まとめ

さくらのレンタルサーバーは、他のレンタルサーバーと違ってちょっとクセがありますが、上記の設定で正常に動作させることができます。

コメント

コメントを残す

お名前(任意)
コメント:新規