Apache/Nginx:特定のリファラーから「画像」参照のみをブロックする

【中古車のガリバー】中古車購入

特定のリファラー(Referer)から「画像」参照のみをブロックする方法をまとめました。(2018/01/15作成)

参照 455992 / Pixabay

0.設定要件

参照元(Referer)が https://bad.example.com (または http://bad.example.com) からのアクセスであった場合、拡張子「.gif .jpeg .jpg .png」ファイルは、ステータスコード「403 Forbidden」を返す。

1.Apache2.2系の場合

SetEnvIf Referer "^https?://bad\.example\.com" ref_ng
<Files ~ "\.(gif|jpe?g|png)$">
	order allow,deny
	allow from all
	deny from env=ref_ng
</Files>

.htaccessによる制御

2.Nginx1.x系の場合

map $http_referer $ref_ng {
	~^https?://bad\.example\.com/ 1;
	default 0;
}
…
location ~ \.(gif|jpe?g|png)$ {
	if ($ref_ng) {
		return 403;
	}
}

Nginxの設定ファイルによる制御

3.設定解説

https? は「s」の0回または1回の繰り返しを表し、つまり httpと https両方で有効となります。
Apacheの Orderは、SQLの orderと異なり、後に記述された方がデフォルトになります。
Nginx mapディレクティブは、特定の変数の値を別の変数の値に応じて設定できる機能です。

以上

About yoshimasa

埼玉県さいたま市在住、2男3女のパパです。Linux系の技術情報を中心にまとめています。1978年2月生まれ。