Cadidy Webサーバー入門
9653 ワード
The piece was originally published on my blog at legobox
背景
昨年私はキャディーと呼ばれるサーバーに遭遇した、私はそれが名前が私のお気に入りのラップアーティストーカーBの1つのように聞こえたので、それが好きだった奇妙な音?ただ、私はCandy Webサーバーを愛していた理由ではなく、なぜそれはNGNXよりもインストールし、構成するはるかに簡単なサーバーであり、それはあなたのドメインのためのSSL証明書の独自の統合が付属していると、これらはワイルドカードが含まれていますが、この記事では、サーバーの鳥の目のビューを取るつもりだとなぜそれが素晴らしいツールだ理解するために取得します.
前提条件
これに潜む前に、あまり知らないことがたくさんありますが、次のようなことがあればいいでしょう.
少なくとも
これらで、あなたは行くのが良いです.
起源
長いストーリー短いキャディーは、ライトコードラボによって作成され、オープンソースを作った、それはサーバーのブロックを使用してNGinxと同様の方法で動作し、このケースでは、すべての構成は、CaddyFileと呼ばれる1つのファイルで行うことができます、それがドメイン名の一部として指定されると、それはhttps(Sに強調)を実装します.
その光と高速高速と、それに関連する本当に良いドキュメントがたくさんあります.私はあなたを納得させることができたので、私たちはどのようにインストールすることができますし、セットアップキャディーを見てみましょう.
キャディーの設置
まず最初に、あなたはウェブサイト(https://caddyserver.com/download)を訪問することによってキャディーをダウンロードすることができます、インストールは非常に簡単で簡単に入手できます.
zipファイルをダウンロードした場合は、これらの指示に従って転がります.
まず、Caddyバイナリをシステム全体のバイナリディレクトリに置き、適切な所有権と権限を与えます.
sudo cp /path/to/caddy /usr/local/bin
sudo chown root:root /usr/local/bin/caddy
sudo chmod 755 /usr/local/bin/caddy
キャディーバイナリに特権ポート(例えば、80 , 443 )を非rootユーザとしてバインドする機能を与えます.
sudo setcap 'cap_net_bind_service=+ep' /usr/local/bin/caddy
必要に応じてユーザ、グループ、ディレクトリを設定します. sudo groupadd -g 33 www-data
sudo useradd \
-g www-data --no-user-group \
--home-dir /var/www --no-create-home \
--shell /usr/sbin/nologin \
--system --uid 33 www-data
sudo mkdir /etc/caddy
sudo chown -R root:www-data /etc/caddy
sudo mkdir /etc/ssl/caddy
sudo chown -R root:www-data /etc/ssl/caddy
sudo chmod 0770 /etc/ssl/caddy
適切なディレクトリにキャディー設定を置き、適切な所有権と権限を与えます.
sudo cp /path/to/Caddyfile /etc/caddy/
sudo chown www-data:www-data /etc/caddy/Caddyfile
sudo chmod 444 /etc/caddy/Caddyfile
サーバーのホームディレクトリを作成し、適切な所有権を与えると権限
sudo mkdir /var/www
sudo chown www-data:www-data /var/www
sudo chmod 555 /var/www
例としてあなたのウェブサイトのコンテンツがあると仮定しましょう.com.あなたのウェブサイトをキャディーが提供する場所に置きます.
sudo cp -R example.com /var/www/
sudo chown -R www-data:www-data /var/www/example.com
sudo chmod -R 555 /var/www/example.com
あなたが追加することによって、この場所からサイトを提供するために明示的にキャディーを設定する必要がありますあなたが既にしていない場合は以下のようにします.
example.com {
root /var/www/example.com
...
}
システムエミュレータの設定ファイルをインストールし、システムのデーモンを再読み込みします.を返します.
wget https://raw.githubusercontent.com/mholt/caddy/master/dist/init/linux-systemd/caddy.service
sudo cp caddy.service /etc/systemd/system/
sudo chown root:root /etc/systemd/system/caddy.service
sudo chmod 644 /etc/systemd/system/caddy.service
sudo systemctl daemon-reload
sudo systemctl start caddy.service
次のようにしてCoodyサービスを自動的に起動します sudo systemctl enable caddy.service
キャディーが適切に起動していない場合は、ログデータを表示することで、問題を解決することができます. journalctl --boot -u caddy.service
あなたのCaddyFileでlog stdout
とerrors stderr
をSystemdジャーナルを完全に利用するために使ってください.あなたのGNU/LinuxディストリビューションがSystemdでジャーナルを使用しないなら、
/var/log
でどんなログファイルもチェックしてください.Caddyから最新のログをたどる場合は、次のようにします.
journalctl -f -u caddy.service
他の証明書と秘密鍵ファイルを以下のコマンドでwww-data
ユーザーにアクセスできます. setfacl -m user:www-data:r-- /etc/ssl/private/my.key
キャディファイル
一方、CaddyFileの一見をキャッチしている可能性があります設定するには、今それを実際に見てみましょう、どのようにセットアップをサーバーブロック、このように簡単です.
https://mydopesite.com {
root /path/to/site_files
}
Voila、その簡単.我々がもう少しそれを理解することができるようにそれを壊しましょうサイトアドレス
HTTPサーバーは、ラベルのサイトアドレスを使用します.アドレスは、242479142 24
scheme
://
host
:
242479142 port
において指定される.ホスト部分は通常localhostかドメイン名です.デフォルトのポートは2015(自動サイトの場合は自動HTTPSの場合は443に変更されます).Scheme部分はポートを指定するもう一つの方法です.有効なスキームは、それぞれ「HTTP」または「HTTPS」であり、それぞれ、ポート80および443を表す.スキームとポートの両方を指定すると、ポートが優先します.例えば、このテーブルは自動的なhttpsを適用します.
:2015 # Host: (any), Port: 2015
localhost # Host: localhost; Port: 2015
localhost:8080 # Host: localhost; Port: 8080
example.com # Host: example.com; Ports: 80->443
http://example.com # Host: example.com; Port: 80
https://example.com # Host: example.com; Ports: 80->443
http://example.com:1234 # Host: example.com; Port: 1234
ホスト名でワイルドカード文字/
を使用できます.path
は有効ですが、*
はありません.パスマッチング
いくつかのディレクティブは、マッチするベースパスを指定する引数を受け取ります.ベースパスはプレフィックスです.URLがベースパスで始まるならば、それはマッチです.例えば、
*.example.com
のベースパスはfoo*.example.com
、/foo
、/foo
、/foo.html
に要求される.指令
ほとんどのディレクティブはミドルウェアの層を呼び出します.ミドルウェアは、HTTPリクエストを処理するアプリケーションの小さな層であり、1つのことは本当によくありません.ミドルウェアは、起動時に(事前にコンパイルされた場合)、連鎖されます.CaddyFileから呼び出されるミドルウェアハンドラだけがチェインされるので、小さなCaddyfilesは非常に速くて、効率的です.
引数の構文はディレクティブからディレクティブによって異なります.いくつかの引数を必要とする、他のしないでください.
プレースホルダー
場合によっては、ディレクティブはプレースホルダ(取り替え可能な値)を受け取ります.これらはカーリーブレース
/foobar
に囲まれ、リクエスト時にHTTPサーバによって解釈される単語です.例えば、/foo/bar.html
または{ }
.変数のように考える.これらのプレースホルダは、CadyFilesで使用できる環境変数とは関係がありません.あなたがこれについてもう少し理解するのを見ているならば、若干の時間を医者に投資することは素晴らしいでしょう.(ここをクリックしてください).
キャディーにおけるプロキシとロードバランシング
Caddyのプロキシアクションを引き離すのは、プロキシディレクティブを設定するのと同じくらい簡単です.
このミドルウェアは、ログ形式で使用できるプレースホルダを追加します.
https://mydomain.here{
// usual structure is (proxy from to)
proxy /api localhost:9005
}
上記のプロキシは全ての/APIルートをlocalhostにリダイレクトします.プロキシのポリシーオプションを使用して、NGNXアルゴリズムを使用する場合、同じ概念に基づいてプロキシアルゴリズムを設定できます.
proxy / web1.local:80 web2.local:90 web3.local:100 {
policy round_robin
}
ロードバランシングに関連した方針は、ここにあります政策
利用可能ないくつかの負荷分散ポリシーがあります.
結論
今ではキャディーと仕事をするのが大好きですが、それはとても簡単に仕事をするツールですが、そこにWebサーバーの多くのオプションがありますが、このサーバーが与える利点はとてもエキサイティングで価値があります.
あなたはそれについての詳細を学ぶために探している場合は、https://caddyserver.comでプロジェクトをチェックアウトしてください.
Reference
この問題について(Cadidy Webサーバー入門), 我々は、より多くの情報をここで見つけました https://dev.to/legobox/another-kickass-server-called-caddy-4o1fテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol