squid でアクセス拒否メッセージをサイトによって変更する。

2005-7-11 21:41
このエントリーをはてなブックマークに追加

プロキシサーバ squid を使って、サイトのアクセス拒否設定をした場合、iframe を使った広告が別サーバにある場合など、次のような画面になってしまうことがよくあります。

iframe 部分に squid のエラーメッセージが表示されてしまう様子

この画面のように、squid のエラーメッセージが iframe 内に表示されてしまうと、見苦しい感じがします。

広告のサーバが特定できる場合は、squid.conf の deny_info の設定により、オリジナルのエラーメッセージ画面を表示させることにより、これを変えることができます。squid.conf に次のようなアクセスコントロールリスト (acl) を追加します。

  acl adservers dstdomain "/etc/squid/adservers"
  acl adservip dst "/etc/squid/adservip"
  ……
  http_access deny adservers
  http_access deny adservip 
  ……  
  deny_info ERR_AD_SERVERS adservers adservip 

これを保存したら、次に /etc/squid/adservers ファイルを作成し、広告サーバのドメインを列挙します。

  # adservers
  .doubleclick.net
  .valueclick.jp
  adcl.sankei.co.jp
  ……

また IP アドレスは dstdomain でなく dst で指定します。範囲で指定することもできます。

  # adservip
  210.155.151.248/32
  ……

最後に ERR_AD_SERVERS ファイルを作成します。これは error_directory で指定されたディレクトリ(Red Hat Linux のデフォルトでは /etc/squid/errors/ )に置きます。中身は iframe 内に表示したい HTML を記述しますが、ここではテストのためわかりやすいように次のような内容にします。

  <em style="color:red">ad</em> (%s)

%s を入れているのは、これがないと squid がフッターを自動付加してしまうからです。
このファイルを保存したら squid の設定を再読込させます。

  # service squid reload

これで、広告の iframe に表示されるエラーメッセージが変わりました。

iframe 部分のエラーメッセージが変化した様子

指定した広告サーバ以外で表示されるエラーメッセージは今まで通りとなります。

コメントはまだありません

No comments yet.

Sorry, the comment form is closed at this time.

32 queries. HTML convert time: 0.058 sec. Powered by WordPress. Valid XHTML
Copyright © 2003-2017 @ futuremix.org ログイン