Varnish cacheサーバーの設定方法-swapps
トラフィックの多いウェブサイトは、同じコンテンツを異なるユーザーに何度も提供する必要があります。 アプリケーションによっては、ユーザーがwebページを要求するたびにすべてのアプリケーションロジックを処理するのは非常に高価です(リソースの話)。 ここでは、サーバーキャッシュが来る場所です,あなただけのメモリ内のコンテンツの一時的なコピーを保存し、すべてのユーザーにこのコンテンツを提供す
Varnishはサーバー側でコンテンツをキャッシュするのに最適です。 基本的にはHTMLコンテンツをキャッシュする必要がありますが、ファイルをキャッ: CSS、JS、画像、文書。
それは良い音が、真実は、デフォルトではワニスは何もしない、または少なくともあなたは、ソフトウェアのこの作品の利点を無駄にすることができ、ドキ アプリケーション用にVarnish cacheサーバーを設定、テスト、デプロイする場所と方法を説明します。
デモのために、次のローカルIPアドレスを持つアプリとキャッシュサーバー用の2つのサーバーインスタンスがあるとします:
- アプリサーバー:192.168.1。2
- : 192.168.1.3
Varnish Cache Serverのインストール
この記事の目的のために、Varnish4.0を搭載したUbuntu server16.04をインストールします。 ワニスをインストールするには、次を実行するだけです:
sudo apt install varnish
私はVarnish4.0をインストールします、そして今からあなたは2つの特定のファイルに特別な注意を払うでしょう:/etc/default/varnish
と/etc/varnish/default.vcl
バックエンド設定
あなたがすべき最初の事はバックエンドを設定するか、またはWebアプリケーションがどこにあるかをVarnishに指示することです:
- ホスト名またはIPアドレスとは何ですか?
- ポートとは何ですか?
ファイル/etc/varnish/default.vcl
を更新して次のセクションを見つける必要があることを定義するには、このような例の目的のために構成されます:
backend default { .host = "192.168.1.2"; .port = "8080"; .first_byte_timeout = 60s; .connect_timeout = 300s;}
Varnishは、IP192.168.1.2およびポート8080で実行されているアプリケーションをリッスンするように指示します。
Varnishデーモンを設定します
最初にVarnishが実行される場所を定義する必要があります。 デフォルトのポート6081で実行したままにします。 SSL用のポート80と443でこのデーモンを実行するのは非常に一般的ですが、NGINXを前面に置き、トラフィックに出席するためにそれを残すことを好みます。
メモリに関しては、256MBのメモリでVarnish blankインストールが実行され、一部のアプリケーションでは十分かもしれませんが、トラフィックの多いアプリでは十分ではないかもしれません。
あなたはそれを変更することができます:
/etc/default/varnish
次のセクションを検索します:
DAEMON_OPTS="-a :6081 \-T localhost:6082 \-f /etc/varnish/default.vcl \-S /etc/varnish/secret \-s malloc,256m"
RAMの量を更新するには、256mと表示されている最後の行を変更し、必要な値を更新します。:
DAEMON_OPTS="-a :6081 \-T localhost:6082 \-f /etc/varnish/default.vcl \-S /etc/varnish/secret \-s malloc,3G"
正しい構成で実行されていることを検証する
期待どおりに実行されていることを確認し、プロセスps aux | grep varnish
を確認すると、次のようなものが表示されます:
/usr/sbin/varnishd -j unix,user=vcache -F -a :6081 -T :6082 -f /etc/varnish/default.vcl -S /etc/varnish/secret -s malloc,3G
一部のUbuntuインストールでVarnishスタートアップデーモンを修正
私たちは、サービスがvarnishファイルで定義された指示に従っていないバグを検出し、あなたはスタートアップサービスを編集する必要があるかもしれません。これを行うには、ファイルを開いて編集します
/lib/systemd/system/varnish.service
と次のようなものが表示されます:
Description=Varnish HTTP acceleratorDocumentation=https://www.varnish-cache.org/docs/4.1/ man:varnishdType=simpleLimitNOFILE=131072LimitMEMLOCK=infinityExecStart=/usr/sbin/varnishd -j unix,user=vcache -F -a :6081 -T :6082 -f /etc/varnish/default.vcl -S /etc/varnish/secret -s malloc,256MExecReload=/usr/share/varnish/reload-vclProtectSystem=fullProtectHome=truePrivateTmp=truePrivateDevices=trueWantedBy=multi-user.target
それを機能させるためには、行ExecStart内のセクションを更新し、必要な設定のために置き換える必要があります:
ExecStart=/usr/sbin/varnishd -j unix,user=vcache -F -a :6081 -T :6082 -f /etc/varnish/default.vcl -S /etc/varnish/secret -s malloc,3G
それが終わったら、サービスデーモンをリロードする必要があります: systemctl daemon-reload
キャッシュをパージするように設定する方法
ワニスキャッシュをクリアするには2つの方法があります:
- サービスを再起動します。
- パージ要求をVarnishサーバーに送信します。
:
sudo service varnish restart
しかし、本当に必要なのは、アプリケーションサーバーからパージ要求を送信できるようにすることです。 これは、特定のパスまたはそれらのすべてをパージするようにサーバーに指示することによって実現できます。 CURLを使用すると、要求は次のようになります:
curl -X PURGE http://192.168.1.3:6181
デフォルトでは、Varnishは外部サーバーからのパージ要求を許可しないため、アプリケーションサーバーからの要求を許可する必要があります。 これを行うには、/etc/varnish/default.vcl
を編集して、アプリサーバーのIPアドレスを追加する必要があるパージセクションを見つけます:
acl purge { "localhost"; "127.0.0.1"; "192.168.1.2"/24;}
パージ
をデバッグするには、すべてが正しく動作していることを検証する必要があります。 そのためには、次のコマンドを使用できます:
varnishlog -g request -q 'ReqMethod eq "PURGE"'
次に、パージ要求を送信すると、パージ要求が受信されたことを確認するために次のようなものが表示されます:
* << Request >> 1179851- Begin req 1179850 rxreq- ReqStart 192.168.195.197 39700- ReqMethod PURGE- ReqURL /.*- ReqProtocol HTTP/1.1- ReqHeader Host: swapps.com- ReqHeader User-Agent: W3 Total Cache- ReqHeader Connection: close- ReqHeader X-Forwarded-For: 192.168.195.197- VCL_call RECV- Timestamp Process: 1531199642.768541 0.000094 0.000094- RespHeader Date: Tue, 10 Jul 2018 05:14:02 GMT- RespHeader Server: Varnish- RespHeader X-Varnish: 1179851- RespProtocol HTTP/1.1- RespStatus 200- RespReason OK- RespReason Purged- End
200OKステータスは、すべてが正常に終了し、Varnishが要求されたURLのキャッシュをクリアしたことを意味し、サーバー上でコンテンツのキャッシュを開始す
あなたが行っていない場合は、次のステップは、あなたがキャッシュしたいコンテンツのルールを設定することですが、それは別のブログ記事のトピ