簡単にSSL証明書を取得可能&シンプルな設定ファイルでHTTP/3も利用できるGo製ウェブサーバー「Caddy」
ウェブサーバーとして有名なソフトウェアはApacheやnginxですが、設定が難しいと感じる人も少なくないはず。Google発のプログラミング言語「Go」で開発された「Caddy」は、最低限の設定でSSLによる暗号化やHTTP/3での通信も可能なウェブサーバーです。
Caddy 2
https://caddyserver.com/v2
CaddyはUbuntuやCentOSなどのLinuxで利用可能。今回はUbuntu 18.04にCaddyをインストールしてみます。
下記コマンドを実行すれば、Caddyをインストールすることができます。
echo "deb [trusted=yes] https://apt.fury.io/caddy/ /" \ | sudo tee -a /etc/apt/sources.list.d/caddy-fury.list sudo apt update sudo apt install caddy
インストールすると自動でCaddyが起動します。サーバーのドメイン名にアクセスすると、きちんとウェルカム画面が表示されました。
CaddyをインストールしただけではHTTPSが有効になっていないので、Chromeのアドレスバーには「保護されていない通信」と表示されています。
CaddyはLet's Encryptを利用して自動でSSL証明書を取得してくれます。HTTPSを有効にするため、ウェルカム画面の指示に従いCaddyの設定ファイルである「/etc/caddy/Caddyfile」にドメイン名を追記します。
ファイルを変更したら、Caddyのサービスをリロードします。
sudo systemctl reload caddy
もう一度サーバーのURLにアクセスすると、「この通信は保護されています」と表示されました。SSL証明書が取得され、きちんとHTTPSによる通信が行われています。
ルートディレクトリの変更やBASIC認証といったCaddyの詳細な設定もCaddyfileにて行います。例えば以下の記述は、静的なファイルサーバー「example.com」のルートディレクトリを「/var/www/html/」とし、アクセスログを「/var/log/caddy/access.log」に記録、BASIC認証をルートディレクトリ以下に設定するための内容です。
example.com { root * /var/www/html/ file_server log { output file /var/log/caddy/access.log } basicauth /* { ユーザー名 パスワードのハッシュ値 } }
Caddyはまだ実験段階であるHTTP/3にも対応しています。HTTP/3を使用するにはCaddyfileの先頭に下記の記述を追加し、サービスをリロードします。
{ experimental_http3 }
HTTP/3に対応しているブラウザは、記事作成時点ではChrome CanaryとFirefoxのナイトリー版しかないので、今回はChrome CanaryでHTTP/3による通信を行ってみます。下記コマンドをコマンドプロンプトで実行し、HTTP/3を有効にしてChrome Canaryを起動。なお、h3-27の「27」は、HTTP/3のドラフト番号であるため、頻繁に変更されます。
"C:\Users\ユーザー名\AppData\Local\Google\Chrome SxS\Application\chrome.exe" --enable-quic --quic-version=h3-27
URLにアクセスするとプロトコルが「h3-27」と表示され、HTTP/3で接続されていることが確認できました。
・関連記事
お手軽にウェブアプリを開発できるOSSのフレームワーク「Phoenix Framework」、15分でTwitterライクなアプリを開発するムービーも - GIGAZINE
Google発のプログラミング言語「Go」の利用状況を調査した結果が公開中、どこでどのように使われているのか? - GIGAZINE
ウェブサイトの高速化を目指す「HTTP/3」の現時点でのパフォーマンスは? - GIGAZINE
Webサーバーソフトウェアでnginxのシェアが3割越え、王者Apacheはシェア50% - GIGAZINE
全世界で使われるWebサーバーの開発元「NGINX」にロシア警察の強制捜査、従業員拘束&機器押収へ - GIGAZINE
・関連コンテンツ
in ソフトウェア, Posted by darkhorse_log
You can read the machine translated English article A Go web server 'Caddy' that can easily ….