画像の盗難を防ぐために Nginx で Referer を設定する方法

画像の盗難を防ぐために Nginx で Referer を設定する方法

サーバーの画像が他のウェブサイトからホットリンクされると、サーバーの帯域幅とアクセス速度に影響します。このため、画像ファイルまたはビデオファイルに対してアンチホットリンク機能を設定する必要があります。

アンチホットリンク機能とは、簡単に言えば、リソースに直接アクセスすることはできるが、自分のサーバーにリソースリンクを置いて他の人がアクセスできないようにする機能です。特に、画像やビデオなどの大きなファイルは、サーバーの応答が非常に遅くなる可能性があります。

画像ホスティングサービスでなかったら、他のウェブサイトが当サイトの写真を直接使用してしまうのではないかと本当に心配です。こうなると、あっという間にトラフィックを使い果たしてしまう可能性があります。結局、CDN は多額のお金で購入されるのです。 したがって、アンチホットリンクを設定することをお勧めします。Nginx はこの機能を実行できます。

一般的に、HTTP プロトコルに準拠したブラウザが Web サイト A から Web サイト B にアクセスすると、クリック元を示すために現在の Web サイトの URL が含まれます。したがって、Nginx のこのモジュールもこれが実装されることに依存しています。したがって、ハッカーがこのヘッダーを追加しないと、画像の盗難を防ぐことはできません。

Nginx 公式サイトのドキュメントは次のとおりです。

構文: valid_referers none | blocked | server_names | string ...;
デフォルト: -
コンテキスト: サーバー、場所

nginx リファラ ディレクティブの紹介

nginx モジュール ngx_http_referer_module は、通常、不正なドメイン名からのリクエストをブロックするために使用されます。Referer ヘッダーを偽装するのは非常に簡単なので、このモジュールはほとんどの不正なリクエストをブロックするためにのみ使用できることに注意してください。正当なリクエストには referer ソース ヘッダーが含まれないことがあるため、空のソース ヘッダー (referer) を持つリクエストを拒否しないこともあります。

したがって、server または location ブロックにコードを追加できます。これを valid_referers.conf として保存しました。

valid_referers なし、ブロックされた server_names;

($invalid_referer) の場合 {
 403 を返します。
}

次に、必要な場所に include /etc/nginx/valid_referers.conf を追加します。もちろん、これを実行するための前提は、valid_referers.conf が対応するマシンの /etc/nginx/valid_referers.conf パスに配置されていることです。

例:

 場所 /articles/img {
  /etc/nginx/valid_referers.conf を含めます。
  ルート /data/blog/code;
 }

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Nginxはリファラディレクティブを使用してアンチホットリンク設定を実装します
  • リファラーディレクティブを使用して、画像のホットリンクを防止するためにNginxサーバーを設定します。

<<:  Vueはグラフィック検証コードを実装する

>>:  Vue はグラフィック検証コードログインを実装します

推薦する

SSH ポート転送とは何ですか?何の役に立つの?

目次序文1. ローカルポート転送2. リモートポート転送3. 動的ポート転送(SOCKS5) 4. ...

IDEA を MYSQL データベースに接続するための構成時に失敗する問題の解決策

この記事では、主に、IDEA を MYSQL データベースに接続するための構成時に失敗する問題の解決...

VMware 12 での Ubuntu 16.04 インストール チュートリアル

この記事では、VMware 12でのUbuntu 16.04のインストールチュートリアルを参考までに...

MacにMySQLをインストールするときに初期パスワードを忘れた場合の対処方法

パスワードを忘れると困ります。Mac に MySQL をインストールするための初期パスワードを忘れて...

Nginx は https ウェブサイト構成コード例を実装します

https ベースポート 443。これはキーと呼ばれるものに使用されます。これらのことを理解せずにで...

手書きの Vue2.0 データハイジャックの例

目次1: webpackをビルドする2. データハイジャック3: まとめ1: webpackをビルド...

あなたを救うために、私のテーブルは何を使えばいいでしょうか (Haiyu Blog)

テーブルはかつて、Web ページの開発、つまりレイアウトにおいて非常に重要な役割を果たしていました。...

Vuex のコアコンセプトと基本的な使用法の詳細な説明

目次導入始めるインストール①直接ダウンロードする方法②CND法③NPM方式④糸法NPMインストールの...

弾幕効果を実現するためのjQuery

この記事では、弾幕効果を実現するためのjQueryの具体的なコードを参考までに共有します。具体的な内...

カルーセル効果を書くためのjs

この記事では、カルーセルマップの効果を実現するためのjsの具体的なコードを参考までに共有します。具体...

Linux コマンドで .sql ファイルをエクスポートおよびインポートする方法

この記事では、Linux コマンドを使用して .sql ファイルをエクスポートおよびインポートする方...

Windows 8 での MySQL Community Server 5.6 のインストールと設定のチュートリアル

この記事では、Windows 8 での MySQL5.6 のインストールと設定のチュートリアルを記録...

セマンティックHTML構造を理解する方法

HTML と CSS は誰もが知っていると思います。HTML の構造と CSS の表現の分離も知って...

丸い角や鋭い角を表現するために、絵の代わりに文字を使用する研究

Google Gmail ページから撮った次のスクリーンショットをご覧ください (同じ場所からスクリ...

LeetCode の SQL 実装 (184. 部門内で最も高い給与)

[LeetCode] 184. 部門最高給与従業員テーブルにはすべての従業員が保存されます。すべて...