この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 10873|答える: 0

[ウェブ] NginxのX-Sendfile機構(PHP版)によるファイルアクセスの制御

[リンクをコピー]
掲載地 2018/11/07 10:05:15 | | |
BBSやウェブサイトは、このページを閲覧したり、リソースをダウンロードしたりする権限を持つことが多いです。数日前にnginxサーバーにアクセスし、x-sendfileを使ってこのファイル制御の実装方法を教えました。

1. X-Sendfileとは何ですか?

X-Sendfileは、バックエンドアプリケーションからフロントエンドのウェブサーバーへファイルダウンロードリクエストを中継し処理する仕組みであり、特に大規模なファイルダウンロードを扱う際に、バックエンドプログラムが送信のためにファイルの読み取りや処理を行うプレッシャーを軽減し、サーバーの効率を大幅に向上させます。

X-Sendfileは特定のHTTPヘッダーを通じて実装されます。これは、X-Sendfileヘッダー内のファイルのアドレスを指定することで、フロントエンドのウェブサーバーに広告を送ります。 ウェブサーバーはバックエンドからのこのヘッダーを検出すると、バックエンドからの他の出力を無視し、キャッシュヘッダーやブレークポイント再接続などの最適化を含む独自のコンポーネントを使ってファイルをユーザーに送信します。

しかし、X-Sendfileを使用する前に、これは標準的な機能ではなく、ほとんどのウェブサーバーではデフォルトで無効化されていることを理解することが重要です。 異なるウェブサーバーは異なる実装を持ち、X-Sendfileヘッダー形式も異なります。 設定が誤ると、ユーザーは0バイトのファイルをダウンロードすることがあります。

X-Sendfileを使用すると、.htaccess保護で無効化されていても、非ウェブディレクトリ(例:/root/)内のファイルをダウンロードできます。

異なるウェブサーバーは異なるHTTPヘッダーを実装しています

SENDFILEヘッダー
使用されているウェブサーバー
X-Sendfileアパッチ、Lighttpd v1.5、チェロキー
X-LIGHTTPD-send-fileLightTPD v1.4
X-加速-リダイレクトンギンクス、チェロキー族

X-SendFileを使う欠点は、ファイル転送の制御を失うことです。 例えば、ファイルをダウンロード後に特定の操作を行いたい場合(例えばユーザーに一度だけダウンロードを許可する場合)、このX-Sendfileはバックグラウンドのphpスクリプトがダウンロード成功を認識できないためできません。

2. NGINXの使い方は?

Nginxはこの機能をデフォルトでサポートしており、追加のモジュールの読み込みを必要としません。 実装が少し異なり、送信すべきHTTPヘッダーはX-Accel-Redirectです。 さらに、設定ファイルで以下の設定を行う必要があります

内部とは、このパスがNginx内でのみアクセスでき、ブラウザから直接アクセスできないことで不正ダウンロードを防ぐことを意味します。

3. PHPプログラムの使い方?


X-Accel-Redirectヘッダーを追加すると、ユーザーは/game pathのファイルをダウンロードします。 ファイル権限管理も実装されています。

公式文書紹介:ハイパーリンクのログインが見えます。




先の:愛、結婚、家族、月の前半+6月18日
次に:CFはネットワーク全体で初めて自己照準を合わせて1ヶ月間安定化する視点です
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com