サーバー設定 · 1 min read · Jan 01, 2026
Apacheの前にVarnishを配置する(Ubuntu/Debian)
Apacheの前にVarnishを配置する(Ubuntu/Debian)
Version 1.0, 15-10-2010
Follow me on Twitter
Varnishは、ウェブサイトの速度を向上させるために使用できるオープンソースの「ウェブアクセラレーター」です。
それは、画像やJavaScriptなどの特定の静的要素をキャッシュできますが、負荷分散や追加のセキュリティなどの他の目的にも使用できます。
このチュートリアルでは、後者に焦点を当てます。
このモードでは、Varnishは不完全なHTTPリクエストがApacheウェブサーバーに到達するのを防ぎます。
このチュートリアルはUbuntuを基にしていますが、Debianでもおそらく動作します。
まず、Apache2が実行されていて、設定されていることを確認してください。
Varnishのインストール
これは非常に簡単です。なぜなら、Ubuntuのリポジトリに含まれているからです。しかし、より新しいバージョンを確保するためにVarnishリポジトリを使用したいかもしれません。これを追加するには、次のコマンドを実行します:
sudo curl http://repo.varnish-cache.org/debian/GPG-key.txt | apt-key add -sudo echo "deb http://repo.varnish-cache.org/debian/ $(lsb_release -s -c) varnish-2.1" >> /etc/apt/sources.listAPTを更新し、Varnishをインストールします:
sudo apt-get updatesudo apt-get install varnish素晴らしい、これでVarnishがインストールされましたが、まだ設定する必要があります。
Varnishの設定変更
まず、デフォルトのポートを変更する必要があります。/etc/default/varnishを編集します:
vim /etc/default/varnish少しスクロールして、「 DAEMON_OPTS 」で始まるコメントアウトされていない行を見つけます。
- :6081*を:80*に変更して、デフォルトのHTTPポートでリッスンするようにします。
- default.vclを他のものに編集します。私は「mysite.vcl」を使用しました。
ファイルを保存します。
前のファイルで言及したVCLファイルを編集します。私の場合、/etc/varnish/mysite.vclを編集します。次の内容を貼り付けます:
## localhostのポート8000で実行されているApacheへのリクエストをリダイレクト
backend apache {
.host = "127.0.0.1";
.port = "8000";
}
## フェッチ
sub vcl_fetch {
## 存在する場合はX-Forwarded-Forヘッダーを削除します。
remove req.http.X-Forwarded-For;
## クライアントのIPアドレスをX-Forwarded-Forとして挿入します。これはユーザーの通常のIPアドレスです。
set req.http.X-Forwarded-For = req.http.rlnclientipaddr;
## 追加のセキュリティ、「w00tw00t」攻撃は非常に迷惑なので、ウェブサーバーに到達する前にブロックしましょう。
if (req.url ~ "^/w00tw00t") {
error 403 "許可されていません";
}
## コンテンツを配信
return(deliver);
}
## 配信
sub vcl_deliver {
## Varnishによって追加された一部のヘッダーを隠します。人々にVarnishを使用していることを見せたくありません。
## まだキャッシュしていないので、なぜ人々にそれを使っていると知らせる必要があるのでしょうか?
remove resp.http.X-Varnish;
remove resp.http.Via;
remove resp.http.Age;
## X-Powered-Byヘッダーを隠したいです。誰もが私たちがPHPを実行でき、バージョンxyzを持っていることを知る必要はありません。
remove resp.http.X-Powered-By;
}
ファイルを保存します。これでVarnishの部分は完了です。まだ起動しないでください。
Apacheの設定変更
さて、Apache2がlocalhostでリッスンするようにする必要があります。これには、いくつかの小さな変更が必要です。
vim /etc/apache2/ports.conf次のように変更します:
NameVirtualHost *:80
Listen 80を:
NameVirtualHost *:8000
Listen 127.0.0.1:8000Apacheはそのポートでリッスンします。vhostsも編集する必要があります。vhostを開き、次のように置き換えます:
を
ここまで順調です。ユーザーのIPアドレスが正しく表示されるようにするために、追加のApacheモジュールをインストールする必要があります。Varnishは基本的にApache2と通信しているため、訪問者のIPは127.0.0.1として表示されます。
apt-get install libapache2-mod-rpafRPAF(Reverse Proxy Add Forward)モジュールは、127.0.0.1のIPがVarnishによって設定されたX-Forwarded-ForのIPに置き換えられることを保証します。
デーモンの再起動
Apacheを再起動します:
/etc/init.d/apache2 restart次のコマンドを実行して、正しいIP/ポートにバインドされているか確認します:
netstat -lp | grep apache2次のように表示されれば:
tcp 0 0 localhost:8000 *:* LISTEN 4586/apache2これは正しいです。そうでなければ、間違いを犯しました。さて、Varnishを再起動してポート80でリッスンさせる必要があります。
/etc/init.d/varnish restart次のコマンドを実行して再度確認します:
netstat -lp | grep varnish結果は次のようになります:
tcp 0 0 *:www *:* LISTEN 4498/varnishd
tcp6 0 0 [::]:www [::]:* LISTEN 4498/varnishd(はい、VarnishはIPv6アドレスでもリッスンします。)
さて、これでVarnishをApache2の前に配置しました。サイトがまだ機能するかどうかを確認するために、単に訪問してみてください。何も起こらなかったかのようにサイトが表示されます。Apacheをシャットダウンすることでさらにテストできます。その場合、Varnishエラーページが表示されます。
ボーナス機能
さて、「Apache」から別のHTTPサーバー名に変更したいかもしれません。これは、/etc/varnishにあるVCLファイルを編集することで行えます。次のように:
sub vcl_fetch {の後に次を追加します:
## http.Serverヘッダーを削除
unset obj.http.Server;
## http.Serverヘッダーを別のものに変更
set obj.http.Server = "Incognito";明らかに、あなたが望むものに見せることができます。例えば、Yourdomain.comのように。サーバー上のすべてのドメインが同じサーバー名を使用することに注意してください。
さて、これで終わりです。あなたは今、Apacheの前にリバースプロキシを持っています!
少しの調整で、キャッシュや負荷分散を行うことができます。
新しい投稿を受信箱で受け取る
スパムはありません。いつでも購読を解除できます。