Squidでhostsファイル(/etc/hosts)の変更を反映させる方法

SquidでhostsファイルにIPアドレスを追加しても反映されない

開発環境でSquidを使用しています。
新規の開発環境のドメインを「/etc/hosts」ファイルに追加しましたがsquid経由でアクセスすると、開発環境ではなく本番環境を見に行ってしまいます。squidを再起動すると「/etc/hosts」が読み込まれ開発環境を見に行きました

「/etc/hosts」ファイルの設定について

開発環境で使用する特定のドメイン名を開発用のIPアドレスにアクセスするように、以下のように/etc/hostsファイルにエントリを追加します

$ sudo vi /etc/hosts

192.168.0.10 example.com

さらに、Squidが/etc/hostsファイルを優先するようにするには、Squidの設定ファイル(通常は /etc/squid/squid.conf)に以下の行を追加しています。

$ sudo vi /etc/squid/squid.conf

hosts_file /etc/hosts

「/etc/hosts」の変更が反映されない問題

「/etc/hosts」に新しいエントリを追加しても、すぐに反映されない場合があります。通常、squidを再起動すれば新規にエントリしたIPアドレス・ドメイン名が読み込まれ解決しますが、その都度、再起動すると既存の接続に影響を与える可能性があります。

squid -k reconfigureの活用

squidでは、squidの再起動を避けるために、「squid -k reconfigure」のコマンドが用意されています。
このコマンドを使うことで、Squidに設定ファイルを再読み込みさせることができます。

【使用方法】

$ sudo squid -k reconfigure

squid -k reconfigure」 は、実際には SIGHUP シグナル(ハングアップシグナル)をSquidプロセスに送信して設定ファイルの再読み込みを行います。このシグナルを受け取ると、Squidは設定ファイルを再度読み込みますが、プロセスの完全な再起動は行わず、現在の接続は維持されます。

開発環境において、「/etc/hosts」を利用して特定のドメイン名の解決を行うことは非常に便利ですが、変更が即座に反映されないことが悩みの種になることがあります。「squid -k reconfigure」 コマンドを使うことで、再起動せずに設定を反映させることができます