メモ/nginxで直リン禁止設定。valid_refererでリファラを検証。

memo_top

こんにちは、えんぞーです。

画像でもファイルでもなんでも良いですが、直接リンクをされるのが嫌な場合に自分のサイトからの呼び出しでない場合はアクセスを禁止する・・とか良く聞くと思いますが、今回はそれをnginxで・・・と言うメモ。

とは言っても、このサイトでそれをしているわけでは無いですけども。

Nginxの設定

使用する設定はこちらの「valid_referer」です。

設定ファイルは/etc/nginx/nginx.confとか、環境によるので自分のサーバーのファイルを確認して下さい。

基本的にこれでOK。

server_nameに自サイトのドメインを指定してあげてリファラにそのドメイン入って無かったら403を返す。

ここをrewriteで書き換えると任意の場所に飛ばせます。

良く聞くのは直リン禁止の画像に飛んだり・・とか。

ロケーションを画像ファイルへのみに設定するのであれば

こんな感じで行けるはず。

 追記:Wordpress等での注意点

ちょっと限定的な話しになりますけど、例えばWordpressで【Auto Post Thumbnail】を使っている場合にサムネイルが作られなくなります。

これはプラグイン側で画像を持ってこようとした場合にリファラが無いので画像を持ってくる事が出来ない為です。

これを回避するためにプラグイン側に修正を加える必要が出てきます。

「Auto Post Thumbnail」の例で言うと、

このようにCRULのオプションを足す必要が出てきます。

上記の場合はこの関数を使う部分に分岐があり、そこを排除して強制的にこの関数を使うようにする必要も出てきます。

このように他のプラグイン等にも影響が出る場合があるので注意して下さい。

とりとめのないまとめ

単純に直リンク防止であれば上記の方法だけで出来るので簡単ですね。(注意点もありますけど・・・)

nginx自体は色々と奥が深いのでメモれる部分はメモっていきたいと思います。