squid でアクセス拒否メッセージをサイトによって変更する。
プロキシサーバ squid を使って、サイトのアクセス拒否設定をした場合、iframe を使った広告が別サーバにある場合など、次のような画面になってしまうことがよくあります。
この画面のように、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 に表示されるエラーメッセージが変わりました。
指定した広告サーバ以外で表示されるエラーメッセージは今まで通りとなります。
コメントはまだありません
No comments yet.
Sorry, the comment form is closed at this time.