本日は、ウェブサイトで SSL を強制する方法をご紹介いたします。つまり、すべてのユーザーの HTTP リクエストを対応する HTTPS にリダイレクトする方法です。

HTTP リクエストをリダイレクトするページルールの作成

いつものように、OpenResty Edge の Admin Web コンソールにアクセスしましょう。これは当社のコンソールのサンプルデプロイメントです。各ユーザーには独自のローカルデプロイメントがあります。

今回も test-edge.com ドメインのサンプルアプリケーションを使用します。

屏幕截图

このアプリケーションに移動します。

スクリーンショット

次に、ページルールのページに移動します。

スクリーンショット

新しいページルールを作成します。

スクリーンショット

すべての HTTP リクエストに対してルール条件を有効にします。

屏幕截图

まず、選択可能なすべての変数を確認しましょう。

スクリーンショット

Scheme を選択します。

スクリーンショット

文字列等号演算子はそのままにしておきます。

スクリーンショット

次に、値として http を選択します。

屏幕截图

屏幕截图

これで条件が完成しました。すべての HTTP リクエストにマッチし、HTTPS リクエストは除外されます。

次に、ルールのアクション部分では、301 リダイレクトアクションを設定できます。

屏幕截图

ここには多くのアクションがあります。

屏幕截图

そのため、Redirect アクションを直接検索するのが最適です。

屏幕截图

これを選択します。

スクリーンショット

現在のリクエスト URI はそのままにしておきます。

屏幕截图

また、現在のリクエストの URI パラメータまたはクエリ文字列も引き継ぎます。

スクリーンショット

ただし、新しいリクエストのスキームは変更する必要があります。

スクリーンショット

https を選択します。

スクリーンショット

ここで 301 リダイレクトを代わりに選択できます。

スクリーンショット

これは「永続的リダイレクト」を意味します。

屏幕截图

このルールが既存の通常ルールの前に実行されるようにする必要があります。

スクリーンショット

このルールがマッチした場合、後続のルールをスキップするようにします。

スクリーンショット

このルールに関しては実際には必要ありませんが、リクエストの処理を即座に停止したい場合は、明示的に指定することが常に良い方法です。

これでルールを作成します。

屏幕截图

ここで、すべての HTTP リクエストを対応する HTTPS リクエストにリダイレクトする新しいページルールが表示されます。

スクリーンショット

いつものように、この新しいページルールをプッシュするにはリリースする必要があります。

スクリーンショット

このボタンをクリックします。

スクリーンショット

リリースします!

スクリーンショット

完全に同期されました。

屏幕截图

これで、新しいページルールがすべてのゲートウェイクラスターとサーバーにプッシュされました。

屏幕截图

当社の設定変更では、サーバーのリロード、再起動、またはサーバープロセスのバイナリアップグレードは必要ありません。そのため、非常に効率的でスケーラブルです。

嵌入图片

ページルールのテスト

新しいブラウザタブを開き、HTTP で test-edge.com ウェブサイトにアクセスしてみましょう。

実際に HTTPS に変更されていたことがわかります。ブラウザのアドレスバーの小さな鍵アイコンに注目してください。

ターミナルでも curl を使用してテストできます。

curl -Ss -I http://test-edge.com/

確かに 301 リダイレクトで、HTTPS プロトコルを使用しています。

screenshot 1

より複雑な URI とクエリ文字列も試してみましょう。

curl -Ss -I 'http://test-edge.com/foo/bar?a=32&b=56'

依然として HTTPS にリダイレクトされていることがわかります。

屏幕截图 3

また、URI とクエリ文字列も保持されています。

截图 4

著者について

章亦春(Zhang Yichun)は、オープンソースの OpenResty® プロジェクトの創始者であり、OpenResty Inc. の CEO および創業者です。

章亦春(GitHub ID: agentzh)は中国江蘇省生まれで、現在は米国ベイエリアに在住しております。彼は中国における初期のオープンソース技術と文化の提唱者およびリーダーの一人であり、Cloudflare、Yahoo!、Alibaba など、国際的に有名なハイテク企業に勤務した経験があります。「エッジコンピューティング」、「動的トレーシング」、「機械プログラミング」 の先駆者であり、22 年以上のプログラミング経験と 16 年以上のオープンソース経験を持っております。世界中で 4000 万以上のドメイン名を持つユーザーを抱えるオープンソースプロジェクトのリーダーとして、彼は OpenResty® オープンソースプロジェクトをベースに、米国シリコンバレーの中心部にハイテク企業 OpenResty Inc. を設立いたしました。同社の主力製品である OpenResty XRay動的トレーシング技術を利用した非侵襲的な障害分析および排除ツール)と OpenResty Edge(マイクロサービスおよび分散トラフィックに最適化された多機能ゲートウェイソフトウェア)は、世界中の多くの上場企業および大企業から高い評価を得ております。OpenResty 以外にも、章亦春は Linux カーネル、Nginx、LuaJITGDBSystemTapLLVM、Perl など、複数のオープンソースプロジェクトに累計 100 万行以上のコードを寄与し、60 以上のオープンソースソフトウェアライブラリを執筆しております。

翻訳

英文版の原文と日本語訳版(本文)をご用意しております。読者の皆様による他の言語への翻訳版も歓迎いたします。全文翻訳で省略がなければ、採用を検討させていただきます。心より感謝申し上げます!