背景 go-fastdfs は、http プロトコルをサポートする分散ファイルシステムです。一般的なプロジェクトでは、ファイルシステムのアドレスが直接公開されることはほとんどありません。ほとんどは、nginx などのソフトウェアを介して逆変換されます。当社の比較的特殊なビジネスおよびネットワーク環境シナリオのため、ハイブリッドクラウドネットワークシステムは、パブリックネットワーク部分 (パブリッククラウド) とイントラネット部分 (プライベートクラウド) で構成されています。パブリッククラウドは主に出入り口として機能し、いくつかの監査および認証アプリケーションを実行して上流の要求を処理し、プライベートクラウドの処理回数を減らしてパフォーマンスを向上させます。そのため、パブリック ネットワーク環境では、プライベート クラウドによって提供されるサービスにアクセスするには、リバース プロキシを使用する必要があります。ファイルシステムへのアクセスについても同様です。外部ネットワーク要求を go-fastdfs にリバースプロキシできるように nginx を構成するにはどうすればよいでしょうか?この記事では、手順ごとに説明します。 一般的な構成 一般的に、nginx に精通している友人は、リバース プロキシを構成する必要がある場合は、ロケーション コンテキストとプロキシ モジュールを直接記述できることを知っています。カスタム プレフィックスが必要な場合は、書き換えモジュールを使用できます。簡単な例は次のとおりです。 場所 ~ /dfs/group([0-9]) { proxy_pass http://localhost:8080; ^/dfs/(.*)$ /$1 を書き換えて、break; proxy_set_header ホスト $host:$server_port; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } この時点では、一般的な反生成構成は問題ありませんが、go-fastdfs では問題ないでしょうか? go-fastdfs の場合、一般的なアップロードは問題ありませんが、tus を使用したブレークポイントの再開にはまだ不十分です。なぜでしょうか? tus サーバーは 301 リダイレクトを返し、特定のリクエスト ヘッダーを伝送する必要があるため、特別な設定が必要です。 Tus反生成構成をサポート TUS 逆生成、301 リダイレクト ロケーション書き換え、および特定のリクエスト ヘッダー転送をサポートする必要がある場合、どのように構成すればよいでしょうか?以下の設定を参照してください 場所 ~ /dfs1/group([0-9]) { access_log ログ/dfs/access.log メイン; error_log ログ/dfs/error.log エラー; ^/dfs1/(.*)$ /$1 を書き換えて、break; proxy_pass http://localhost:8051; # リクエストとレスポンスのバッファリングを無効にする proxy_request_buffering をオフ; proxy_buffering をオフ; プロキシ_http_バージョン 1.1; proxy_set_header ホスト $host:$server_port; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # server_nameがパブリックドメイン名でない場合は、この場所をipに設定できます proxy_set_header X-Forwarded-Host $hostname; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header アップグレード $http_upgrade; proxy_set_header 接続「アップグレード」; # プレフィックスと書き換えが使用されるため、返される場所を変更してリバース プロキシ プレフィックス proxy_redirect ~^(.*)/group([0-9])/big/upload/(.*) /dfs/group$2/big/upload/$3 を追加する必要があります。 クライアントの最大ボディサイズ 0; } 上記の 2 つの構成は proxy_redirect と client_max_body_size であることに注意してください。最初の構成は、tus サーバーによって返されるリダイレクト ロケーションにカスタム プレフィックスが付いていないため、カスタム プレフィックスを自分で追加する必要があるためです。ここでは /dfs を使用します。他の場合は変更してください。 2 つ目は client_max_body_size です。これを 0 に設定すると、アップロードされたファイルのサイズに関係なく、リクエストが大きすぎる問題は報告されず、直接転送されます。設定する必要がある場合は、chunkSize 以上の数値を設定してください。 chunkSize とは何ですか? tus クライアントがチャンクでアップロードする際の各チャンクのサイズを指します。詳細については、公式ドキュメントを参照してください。 負荷分散構成 クラスター サーバーが構成されている場合、アップロードまたはダウンロードの負荷を分散するにはどうすればよいですか?逆生成を行うには nginx を使用します。これは、upstream モジュールで実現できます。詳細については、次の構成を参照してください。 アップストリームdfs_stream { サーバー ホスト1:ポート; サーバー ホスト2:ポート; ip_ハッシュ; } 上記の設定は一般的な負荷分散と変わりません。注意する必要があるのは、ip_hash の設定だけです。なぜでしょうか?ブレークポイント レジュームを使用する場合、ファイルはブロック単位でアップロードされるため、ip_hash でない場合は、最初の数個がサーバー A にアップロードされ、最後の数個がサーバー B にアップロードされる可能性があります。この場合、ファイルは完全ではないため、この問題に注意する必要があります。 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: シンプルな画像切り替えを実現するJavaScript
>>: MySQL 5.7.21 のインストールと設定のチュートリアル
まず: <abbr> または <acronym>これら 2 つの記号は同じ意...
1. Docker環境を構築する1. Dockerfileを作成する Centos:latest か...
現在、プロジェクトを作成しました。インターフェースは次のとおりです。これはフレームセットを使用して行...
この記事では、CentOS 7.4 サーバーに Apache をインストールする方法と、インストール...
1. SSHリモート管理SSH の定義SSH (Secure Shell) は、主にキャラクタ イン...
今日は奇妙なネットワーク問題に遭遇しました。調査プロセスといくつかの構成状況を記録し、Linux で...
目次1. 技術の選択2. 技術的な実装vue-json-excelプラグインを使用して実装1. vu...
さらに、ブログ プログラムで構築された記事 Web サイトは常にブログのように見え、カスタマイズでき...
この記事では、MySQL の null (IFNULL、COALESCE、NULLIF) に関連する...
目次1. 基本的な例2. 計算プロパティキャッシュとメソッド3. 計算プロパティセッター序文:通常、...
問題の説明MySQL の起動時にエラーが報告されます。エラー ログを確認してください。 [エラー] ...
目次序文1. ローカルポート転送2. リモートポート転送3. 動的ポート転送(SOCKS5) 4. ...
HTML を記述する過程で、クラス属性に複数の値を定義することがよくありますが、定義した値が無効であ...
<br />関連記事: Web コンテンツ ページ作成に関する 9 つの実用的な提案、W...
先日、rsync を使用して LAN 上の別のシステムに大きなファイルを転送していました。非常に大き...