Nginx のアンチホットリンクと高可用性の解釈

目次

アンチホットリンク保護の解釈

ホットリンクとは何ですか?

 Nginx でのアンチホットリンクの構成

高可用性の解釈 

キープアライブ

Nginx での高可用性の構成 


アンチホットリンク保護の解釈

ホットリンクとは何ですか?

Web ページの読み込みシーケンスは、最初に HTML 関連のコンテンツを読み込み、次に HTML コンテンツを解析します。画像を読み込む必要があるものとファイルを読み込む必要があるものは段階的に読み込まれます。オンライン画像やその他の静的リソースの場合は、これらは他の Web サイトによって盗まれることがよくあります。外部からページをリクエストした後、このページは通常、そのページ内の静的リソースをリクエストします。このとき、リクエスト ヘッダーには現在のリクエストのソースを示す Refer フィールドがあります。指定したソースからのリクエストが返されるように制限することができ、それ以外の場合はリクエストが返されないため、リソースの盗難を防ぐことができます。

リファラーは、 
        HTTP プロトコルに「ページまたはリソース」のソースを示すために使用される「リクエスト ヘッダー」があることを理解します。このリクエスト ヘッダーはリファラーと呼ばれます --> リファラーはリクエストの送信元の URL を示します。リーチング対策機能は、HTTP プロトコルがサポートする Referer メカニズムに基づいており
        、Referer を通じてソースを追跡し、ソースを特定して判断します。

 Nginx でのアンチホットリンクの構成

valid_referers none|server_name

有効な参照値を設定してください

  • none: 検出アドレスに参照がない場合は有効です。
  • server_name: ホスト アドレスを検出します。参照がこのアドレスからのものであることが示されている場合、それは有効です (server_name は完全である必要がありますhttp://xxxx)

注: if ($invalid_referer)if の後にスペースがあるため、記述しないとエラーが報告されます。

nginx: [emerg] unknown directive "if($invalid_referer)" in 
/usr/local/nginx/conf/nginx.conf:27

ここでは、nginx サーバーの img ディレクトリ内の画像にアクセスする前に http:192.168.174/134 を参照する必要があるように設定されています。 

server {
        listen       80;
        server_name  localhost;
				
				location / { 
        		proxy_pass http://xxx;
        }
      
				location /img{
                valid_referers http:192.168.174/134;
                if ($invalid_referer){#无效的
                        return 403;#返回状态码403
                }
                root html;
                index  index.html index.htm;
        }
        
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
}
  • この画像を参照するページと対応する参照先が設定されていない場合、画像を読み込むことができません。
  • 画像アドレスに直接アクセスすると、ソースを指す参照フィールドがないため、Nginx ページが直接表示されます。

アンチホットリンクをテストするにはcurlを使用してください

1.# 安装 curl 命令
yum -y install curl
 
2.# 测试,在 103 机器中访问 101
curl -I http://192.168.44.101/img/logo.png
 
-I:不带 Referer ,只是给我们返回响应的一些头信息。
 
curl -e "http://baidu.com" -I http://192.168.44.101/img/logo.png
 
-e:"http://baidu.com" 为 Referer,返回响应的一些头信息

ホットリンク画像を設定する

プロンプト画像を html/img/x.png に配置すると、ホットリンク防止を設定するために画像にアクセスすると、この x.png 画像が返されます。

location /img{
                valid_referers http:192.168.174/134;
                if ($invalid_referer){#无效的
                     rewrite ^/  /img/x.png break;
                }
                root html;
                index  index.html index.htm;
}

高可用性の解釈 

高可用性 HA (High Availability) は、分散システム アーキテクチャの設計において考慮する必要がある要素の 1 つであり、通常、システムがサービスを提供できない時間を設計によって削減することを指します。

Nginx の高可用性とは、1 つの Nginx がダウンした場合でも、他の Nginx がリクエストを処理するという事実を指します。

キープアライブ

  • Keepalived は、Linux 用の次の軽量高可用性ソリューションであり、仮想ルーティング冗長プロトコルを使用してサービスまたはネットワークの高可用性を実現します。
  • これは元々 LVS 用に設計されており、特にクラスター システム内の各サービス ノードのステータスを監視するために使用されます。
  • サーバー ノードに障害が発生すると、Keepalived がそれを検出し、そのノードをクラスタ システムから自動的に削除します。
  • 障害が発生したノードが正常に戻った後、Keepalived はノードを自動的にクラスターに再参加させることができます。
  • これらのタスクは自動的に完了するため、手動による介入は必要ありません。手動で行う必要があるのは、障害が発生したノードを修復することだけです。

nginx マスターがダウンした場合、keepalived はサービスを nginx スレーブに切り替えてビジネスに影響がないことを確認し、 nginx 単一マシンの障害の問題を回避し、高可用性を実現します。

Nginx での高可用性の構成 

キープアライブをインストールする

yum install -y keepalived

キープアライブ構成を変更する

  • 設定ファイルは /etc/keepalived/keepalived.conf にあります。
  • vrrp_instance、、、、これらの同じマシンは同じグループに属すると考えることができますauthenticationこのグループのみがマスター マシンとして 1 台を選択します。virtual_router_idvirtual_ipaddress

ここでは 2 台のマシンをセットアップし、それぞれ keepalived をダウンロードして設定します。

マシン 1:

! Configuration File for keepalived

global_defs {
   router_id lb1 # 名字与其他配置了keepalive的机器不重复就行
}

vrrp_instance heyingjie {#vrrp实例名可以随意取
    state MASTER #只能有一个默认的Master,其他写BACKUP
    interface ens33 # ip addr查看下网卡名,默认时ens33
    virtual_router_id 51
    priority 100 # 多台安装了keepalived的机器竞争成为Master的优先级
    advert_int 1 #通信时间
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.200.16 #虚拟IP
    }
}

マシン 2:

! Configuration File for keepalived

global_defs {
   router_id lb2 
}

vrrp_instance heyingjie {
    state BACKUP #只能有一个默认的Master,其他写BACKUP
    interface ens33 
    virtual_router_id 51
    priority 50
    advert_int 1 
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.200.16 #虚拟IP
    }
}

コマンドを使用してip addrマシン 1 の IP 情報を表示すると、仮想 IP が表示されます。

画像-20220503175414858

おすすめ

転載: blog.csdn.net/m0_62436868/article/details/132802437