サイトを SSL 化したときに行ったこと
2017/05/25 09:00
  • このサイトはDjango で構築していますが、先日 SSL に完全対応したので
    SSL 化したときに行ったこと、注意するべきリダイレクト設定などをまとめました。

    やったこと

    SSL 化に伴い、以下のことを行いました。


      http でリクエストしているパスを https に変更settings.pybase_urlhttps に変更
    1. Apache の ssl.conf に SSL サイト用のバーチャルホストの設定を記述
    2. Apache の wsgi.conf にリライトルールを追加
    3. サーバーの再起動

    ※ http で運用していたサイトを、まるっと https に置き換えることを目的にしています。

    http でリクエストしているパスを https に変更こちらは、僕の場合は確認程度でした。静的ファイルはすべてドキュメントルートからの絶対パスで記載していますし、 jQuery などのライブラリも
    プロトコルを指定せずに記載しています。(以下)

    外部ライブラリの正しい読み込み方


    <script src="//ajax.googleapis.com/ajax/libs/jquery/2.2.3/jquery.min.js" type="text/javascript"></script>
    

    https, http を指定せず、 // から指定するようにします。
    なので、僕の場合は影響を受けるのはランキングサイトだったり、 Zenback のシェア系の
    ボタンに関連するものだけでした。これについては別の機会に紹介したいと思います。

    settings.pybase_urlhttps に変更僕の場合は settings.pyhttp -> https に変更しました。
    たぶん本来こんな設定不要なんだろうな…^^;

    Apache の ssl.conf に SSL サイト用のバーチャルホストの設定を記述

    https で運用するバーチャルホストの設定を記載します。別に conf ファイルはどれでもいいですが、自動生成される /etc/httpd/conf.d/ssl.conf に設定しました。
    設定方法は別の記事にあるのでここでは割愛します。

    さくらのVPSにRapidSSLの証明書を組み込んだときのメモ


    DjangoアプリケーションをApache上で本番環境として動かす方法


    Apache の wsgi.conf にリライトルールを追加

    SSL 用のバーチャルホストの設定が一通り終わったら、http のほうの設定にリダイレクトのルールを追加します。
    Django を Apache で動かすために mod_wsgi を使っているのでファイル名が wsgi.conf になっていますが、そこは適宜読み替えて下さい。設定項目は同じです。

    /etc/httpd/conf.d/wsgi.conf

    <VirtualHost *:80>
        ServerName www.4to.pics
        ServerAlias 4to.pics
    
        <IfModule mod_rewrite.c>
            RewriteEngine on
            RewriteCond %{HTTPS} off
            RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
        </IfModule>
    </VirtualHost>
    

    だいたいこんな感じですね。
    http でアクセスがあったら、そっくりそのまま https にリダイレクトさせています。
    さらに、HTTP ステータスコード 301 指定することで、「このページは移転しましたよ」「リダイレクトします」
    ということを明示的に指定します。

    [R=301,L]

    301 を指定するのはGoogleなどの検索エンジンやクローラ向けです。
    適切にリダイレクトしてあげれば、重複コンテンツの警告もでないです。

    天下のGoogle様も最善の方法とおっしゃっていますし。笑

    検索エンジンの結果で表示されるページの URL を変更する必要がある場合は、サーバー サイドの 301 リダイレクトを使用することをおすすめします。これは、ユーザーや検索エンジンが正しいページにたどり着くことを保証する最善の方法です。ステータス コード 301 は、ページが別の場所に完全に移転したことを意味します。


    ページの URL の変更と 301 リダイレクトの使用

    サーバーの再起動

    最後に、WEBサーバーを再起動したら完了です。

    $ sudo /etc/init.d/httpd restart
    

    以上です。

    人気ブログランキングへ ブログランキング・にほんブログ村へ
    ↑応援よろしくお願いします!m(_ _)m

  • <2017/05/25 09:00>
  • サーバー
  • ApacheCentOSSSLhttpd設定httpsmod_rewrite
  • 新しい記事へ
    mac に pip をインストールする

    古い記事へ
    [Django] タグクラウド機能を実装してみた

profile picture

自己紹介的な何か

@wkmettyでついったーやってます。時々。 6年間勤めたゲーム会社を2018年2月に退職しフリーランスのプログラマに。 WordPress Core, WP-CLI コントリビューター。 お仕事募集中です。