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にインポートする際に発生する問題と解決策の分析

推薦する

Vue.js フロントエンドフレームワークにおけるイベント処理の概要

1. v-onイベント監視DOM イベントをリッスンするには、v-on ディレクティブを使用します。...

HTML で Web ページに動的な時計を書く

HTML を使用して動的な Web クロックを作成します。コードは次のとおりです。 <!DOC...

Linux で PHP curl 拡張機能をインストールする方法の詳細な説明

この記事では、Linux で PHP curl 拡張機能をインストールする方法について説明します。ご...

Win2008 サーバー セキュリティ チェック手順ガイド (日常のメンテナンス手順)

ドキュメントはしばらく前から書いていましたが、アップロードする勇気がありませんでした。サーバーのセキ...

Nginx で https をアップグレードする方法

購入証明書Alibaba CloudのCloud Shield証明書サービスから購入できます。証明書...

Typescript の as、疑問符、感嘆符の詳細な説明

1. asキーワードはアサーションを示すTypescript では、アサーションを表現する方法が 2...

Ant Design Pro ログイン機能にグラフィック検証コード コンポーネントを統合する方法

序文:この記事では、Ant Design Proログイン機能にグラフィック検証コードコンポーネントを...

HTML テーブル タグ チュートリアル (34): 行スパン属性 ROWSPAN

複雑なテーブル構造では、一部のセルが水平方向に複数のセルにまたがるため、行間属性 ROWSPAN を...

MySQLユーザー権限管理の詳細な説明

目次序文: 1. ユーザー権利の概要2. 実際の権限管理序文:データベースのユーザー権限管理について...

マウス追従ゲームを実現するjs

この記事では、マウス追従ゲームを実装するためのjsの具体的なコードを参考までに共有します。具体的な内...

HTMLを使用して、IPを制限する投票ウェブサイトの不正行為スキームを実装する

これは、IP アドレスが制限されている投票 Web サイトの不正行為の手口です。この方法は、投票 W...

両端の CSS レイアウトのサンプルコード (親の負のマージンを使用)

最近、開発中に両端が揃ったレイアウトに遭遇しました。レイアウトはパーセンテージに基づいていました。以...

HTML ページ ヘッダー コード例の詳細な説明

知識ポイント1: ヘッダー情報にWebページのベースURLを設定するベース URL の本質は、ハイパ...

Vue3 カプセル化された虫眼鏡コンポーネントのサンプルコード

目次コンポーネントインフラストラクチャ目的: 画像拡大鏡機能を実現するvueuseをインストールする...

Navicat の MySQL へのリモート接続の実装手順の分析

序文皆さんはリモート サーバーで開発を行っており、MySQL の使用率はかなり高いはずです。コマンド...