Nginx のアンチホットリンクを設定する方法

Nginx のアンチホットリンクを設定する方法

実験環境

• 最小限のインストール済みの CentOS 7.3 仮想マシン
• 構成: 1 コア/512MB
•nginx バージョン 1.12.2

1. ホットリンクウェブサイトを設定する

1. nginx仮想マシンを起動し、2つのWebサイトを構成する

vim /etc/nginx/conf.d/vhosts.conf

次のコンテンツを追加します

サーバー{
 聞く 80;
 サーバー名 site1.test.com;
 ルート /var/wwwroot/site1;
 インデックス index.html;

 位置 / {
 }
}

サーバー{
 聞く 80;
 サーバー名 site2.test.com;
 ルート /var/wwwroot/site2;
 インデックス index.html;

 位置 / {
 }
} 

2. ホストマシンのC:\Windows\System32\drivers\etc\hostsファイルを編集します。

192.168.204.11 サイト1.test.com
192.168.204.11 サイト2.test.com

3. ウェブサイトのルートディレクトリを作成する

mkdir /var/wwwroot
/var/wwwroot に移動します
mkdir サイト1
mkdir サイト2
echo -e "<h1>site1</h1><img src='1.jpg'>" >> site1/index.html
echo -e "<h1>site2</h1><img src='http://site1.test.com/1.jpg'>" >> site2/index.html

4. 1.jpgを/var/wwwroot/site1ディレクトリにアップロードします。

5. nginxサービスを開始する

systemctl nginx を再起動します
netstat -anpt | grep nginx 

6. ファイアウォールのポート80を開く

強制0を設定する
ファイアウォールコマンド --zone=public --add-port=80/tcp --permanent
ファイアウォール-cmd --reload

7. ホストマシンへのアクセス

このサイトについて

http://site2.test.com

2. site1.test.comのアンチホットリンクを設定する

1. nginx設定ファイルを編集する

サーバー{
 聞く 80;
 サーバー名 site1.test.com;
 ルート /var/wwwroot/site1;
 インデックス index.html;

 位置 / {
 }

 場所 ~ \.(jpg|png|gif|jpeg)$ {
  有効なリファラー site1.test.com;
  ($invalid_referer) の場合 {
   403 を返します。
  }
 }
}
サーバー{
 聞く 80;
 サーバー名 site2.test.com;
 ルート /var/wwwroot/site2;
 インデックス index.html;

 位置 / {
 }
} 

2. nginxサービスを再起動する

systemctl restart nginx

3. ホストマシンへのアクセス

ブラウザのキャッシュをクリアして、http://site1.test.com にアクセスします。

ブラウザのキャッシュをクリアして、http://site2.test.com にアクセスしてください。

アンチホットリンク設定が役割を果たしていることがわかります

3. 他のリソースを返すようにアンチホットリンクを設定する

1. nginx設定ファイルを編集する

アンチホットリンクで保護されたリソースを書き換えるための仮想ホストを追加する

サーバー{
 聞く 80;
 サーバー名 site1.test.com;
 ルート /var/wwwroot/site1;
 インデックス index.html;
 位置 / {
 }
 場所 ~ \.(jpg|png|gif|jpeg)$ {
  有効なリファラー site1.test.com;
  ($invalid_referer) の場合 {
   書き換え^/ http://site3.test.com/notfound.jpg;
   #403 を返します。
  }
 }
}
サーバー{
 聞く 80;
 サーバー名 site2.test.com;
 ルート /var/wwwroot/site2;
 インデックス index.html;
 位置 / {
 }
}
サーバー{
 聞く 80;
 サーバー名 site3.test.com;
 ルート /var/wwwroot/site3;
 インデックス index.html;
 位置 / {
 }
}

説明する

location ~ \.(jpg|png|gif|jpeg)$ {} は、アンチホットリンクを設定するファイルの種類で、縦線 | で区切られます。
valid_referers site1.test.com *.nginx.org; はスペースで区切られたホワイトリストです。ワイルドカードドメイン名を設定するには * を使用できます。
if ($invalid_referer) {} は、ホワイトリストに適合しているかどうかを判断するために使用されます。ホワイトリストに適合していない場合は、{} 内のコンテンツが実行されます。
rewrite ^/ http://site3.test.com/notfound.jpg; はリソースを書き換えます。ホワイトリストに一致しない場合は、このアドレスに書き換えられます。
return 403; は返されるステータス コードが 403 であることを意味します。

2. site3ルートディレクトリを作成する

/var/wwwroot に移動します
mkdir サイト3
echo -e "<h1>site3</h1><img src='notfound.jpg'>" >> site3/index.html

3. notfound.jpgファイルを/var/wwwroot/site3ディレクトリにアップロードします。

4. nginxサービスを再起動する

systemctl restart nginx

5. ホストマシン上のC:\Windows\System32\drivers\etc\hostsファイルを編集します。

site3.test.com のマッピングを追加する

192.168.204.11 サイト1.test.com
192.168.204.11 サイト2.test.com
192.168.204.11 サイト3.test.com

6.ホストマシンでhttp://site2.test.comにアクセスします。

ご覧のとおり、site2 で盗まれた site1 の 1.jpg ファイルは、site3 の notfound.jpg ファイルにリダイレクトされます。

要約する

以上が、私が紹介したNginxのアンチホットリンクを設定する操作方法です。お役に立てれば幸いです。ご質問があれば、メッセージを残してください。すぐに返信いたします。また、123WORDPRESS.COM ウェブサイトをサポートしてくださっている皆様にも感謝申し上げます。
この記事が役に立ったと思われた方は、ぜひ転載していただき、出典を明記してください。ありがとうございます!

以下もご興味があるかもしれません:
  • Linux での Nginx アンチホットリンクと最適化の実装コード
  • Nginx でホットリンクを防ぐ 3 つの方法
  • Nginx アンチホットリンク設定方法
  • Nginx サーバーでのホットリンク防止方法の紹介
  • Nginx イメージホットリンク保護設定例
  • Nginx でアンチホットリンクを設定するための手順を完了する
  • Nginxのアンチホットリンクとサービス最適化設定の全プロセス

<<:  VueのSSRサーバーサイドレンダリング例の詳細な説明

>>:  大量のデータをMySQLにインポートする際に発生する問題と解決策の分析

推薦する

Windows での自動展開に Jenkins を使用するチュートリアル図

今日は、Jenkins + powershell スクリプトを使用して、.NET CORE スクリプ...

Vue.js $refs 使用例の説明

プロパティやイベントがあるにもかかわらず、JavaScript で子コンポーネントに直接アクセスする...

MySQL の最初のインストールが成功した後にパスワードを初期化する手順

ファイルをディレクトリに解凍しますこれは解凍後のディレクトリですmy.iniファイルを入力しますダブ...

Vue 監視属性のグラフィック例の詳細な説明

目次リスナープロパティとは何ですか?リスニングプロパティと計算プロパティの違いは何ですか?監視プロパ...

トリガーメソッドを使用して、ファイルタイプの入力をクリックせずにポップアップファイル選択ダイアログボックスを実現します。

トリガー メソッドを使用できます。JavaScript にはネイティブのトリガー関数はありません。自...

secure_file_priv nullの問題を解決する

secure_file_priv = ' ';管理者としてcmdを実行します。 my...

ビジネス HTML メール作成に関する提案

許可ベースの電子メール マーケティングにより、マーケティングとプロモーションのコストを大幅に削減でき...

Mysql5.7 サービスを開始できません。グラフィカル ソリューション チュートリアル

p>「サービス」で手動で起動すると、 コンソールから起動します: 次に、...\MySQL S...

MySQL クイックデータ比較テクニック

MySQL の運用と保守において、R&D の同僚が 2 つの異なるインスタンスのデータを比較...

VMWare ネットワーク アダプタの 3 つのモードの実装プロセスの分析

3つのモードブリッジ(ブリッジ モード)、NAT(ネットワーク アドレス変換モード)、ホストオンリー...

HTMLは正規表現を使用してテーブルの例をテストします

以下は、HTML で正規表現を使用してテーブルをチェックするサンプル コードです。具体的なコードの内...

MySQL ユーザー権限管理の実装

1. MySQL の権限の概要MySQL には、権限を制御する 4 つのテーブルがあります。user...

nginxはdockerコンテナ内に設定ファイルを自動的に生成します

企業が Docker 自動デプロイメントを構築する場合、Docker の実行時にコンテナ内の設定ファ...

Postman 自動インターフェーステストの実践

目次背景説明GETリクエストの作成事前リクエストスクリプトで署名を作成するスクリプトは環境変数に書き...