Cadidy Webサーバー入門


The piece was originally published on my blog at legobox



背景
昨年私はキャディーと呼ばれるサーバーに遭遇した、私はそれが名前が私のお気に入りのラップアーティストーカーBの1つのように聞こえたので、それが好きだった奇妙な音?ただ、私はCandy Webサーバーを愛していた理由ではなく、なぜそれはNGNXよりもインストールし、構成するはるかに簡単なサーバーであり、それはあなたのドメインのためのSSL証明書の独自の統合が付属していると、これらはワイルドカードが含まれていますが、この記事では、サーバーの鳥の目のビューを取るつもりだとなぜそれが素晴らしいツールだ理解するために取得します.

前提条件
これに潜む前に、あまり知らないことがたくさんありますが、次のようなことがあればいいでしょう.
少なくとも
  • サーバーとプロキシの良い理解.
  • SSL - Secureシェル層とHTTPS
  • の一般的な理解
    これらで、あなたは行くのが良いです.

    起源
    長いストーリー短いキャディーは、ライトコードラボによって作成され、オープンソースを作った、それはサーバーのブロックを使用して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 stdouterrors 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 24scheme :// 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
        }
    
    ロードバランシングに関連した方針は、ここにあります
    政策
    利用可能ないくつかの負荷分散ポリシーがあります.
  • ランダム(デフォルト)-ランダムにバックエンド
  • を選択します
  • LastsRen conn -アクティブな接続
  • でバックエンドを選択します
  • ラウンドヘッズロビン-ラウンドロビンファッション
  • で選択バックエンド
  • 最初- CaddyFile
  • で定義されている順番で最初の利用可能なバックエンドを選択します
  • iplag hash -リクエストIPをハッシュすることでバックエンドを選択し、バックエンドの総数に基づいてハッシュ空間を均等に分配する
  • Urizen hash -リクエストURIをハッシュすることでバックエンドを選択し、バックエンドの総数に基づいてハッシュ空間を均等に分配する
  • Header -指定されたヘッダーの値をハッシュ化することによって選択します.そして、方針名の後に[値]によって指定されて、バックエンドの総数を
  • に基づいて均一にハッシュスペースを分配します

    結論
    今ではキャディーと仕事をするのが大好きですが、それはとても簡単に仕事をするツールですが、そこにWebサーバーの多くのオプションがありますが、このサーバーが与える利点はとてもエキサイティングで価値があります.
    あなたはそれについての詳細を学ぶために探している場合は、https://caddyserver.comでプロジェクトをチェックアウトしてください.