sails.config.http
アプリケーションの基盤となるHTTPサーバーの設定です。これらのプロパティは、慣例的にconfig/http.js
設定ファイルで指定されます。
プロパティ | 型 | デフォルト | 詳細 |
---|---|---|---|
middleware |
HTTPミドルウェアの慣例的なデフォルトを参照してください。 | アプリケーションがすべての受信HTTPリクエストで実行するすべてのHTTPミドルウェア関数の辞書。 例 |
|
middleware.order |
HTTPミドルウェアの順序に関する慣例的なデフォルトを参照してください。 | すべての受信HTTPリクエストに対してミドルウェアを実行する順序を示すミドルウェア名(文字列)の配列。 | |
cache |
31557600000 (1年) |
アプリケーションが'production'環境で実行されている場合に、静的アセットをキャッシュするミリ秒数。 より具体的には、これは静的アセットへのリクエスト(つまり、Expressの静的ミドルウェアによって提供される画像、スクリプト、スタイルシートなどのフラットファイル)に応答する際に「Cache-Control」ヘッダーに含まれる「max-age」です。 |
|
serverOptions |
{} |
SSLのみ:サーバーの作成時にNode https モジュールに直接送信する高度なオプション。これらは、SSL設定(存在する場合)とマージされます。詳細については、createServerドキュメントを参照してください。 |
|
trustProxy |
undefined |
これは、Sails/Expressが「X-Forwarded」ヘッダーをどのように解釈すべきかを指示します。この設定は、HTTPSを使用しており、かつプロキシ(たとえば、HerokuのようなPaaS)の背後にデプロイしている場合にのみ使用してください。アプリケーションがその説明に当てはまらない場合は、これをundefinedのままにしてください。そうでない場合、多くのデプロイで機能するtrue を設定することから始めることができます。それがうまくいかない場合は、利用可能なすべてのオプションについてこちらを参照してください。 |
ボディパーサーは、Sails/Expressアプリが受信HTTPリクエストのボディを読み取り、理解するために使用するものです。さまざまなボディパーサーが利用可能で、それぞれに長所と短所があります。デフォルトでは、Sailsアプリは、ほとんどの種類のHTTPリクエストボディを解析する方法を知っており、ストリーミング、マルチパートファイルのアップロードをサポートする汎用ソリューションであるSkipperを使用します。
別のボディパーサーまたは
req
、res
、next
パラメーターを持つカスタム関数(他のHTTPミドルウェア関数と同じ)を指定できます。
Skipperをカスタマイズするには、まずアプリでnpm install skipper --save
を実行してください。次に、config/http.js
ファイルで次のコードのコメントを解除してください。
bodyParser: (function _configureBodyParser(){
var skipper = require('skipper');
var middlewareFn = skipper({
strict: true,
// ... more Skipper options here ...
});
return middlewareFn;
})(),
次に、以下の表から次のいずれかのオプションを渡します。
プロパティ | 型 | デフォルト | 詳細 |
---|---|---|---|
maxWaitTimeBeforePassingControlToApp |
500 |
マルチパートリクエストの処理時に、アプリケーションのポリシーとコントローラーに制御を渡すまでに待機する最大ミリ秒数。このミリ秒数が経過しても、受信ファイルのアップロードがなく、リクエストがテキストパラメーターなどの他のデータの送信を完了していない場合(つまり、フォームが「close」を送信する場合)、それ以上遅延することなく制御が渡されます。特定のロードバランサー、プロキシ、および/またはSSLの組み合わせの背後で実行されているアプリの場合、この遅延を増やす必要がある場合があります(https://github.com/balderdashy/skipper/issues/71#issuecomment-217556631)を参照してください)。 | |
maxTimeToWaitForFirstFile |
10000 |
.upload() のコールバックをトリガーする前に、指定された上流で最初に行われるファイルのアップロードを待機する最大ミリ秒数。指定された上流での最初のファイルアップロードがこのミリ秒数が経過する前に到着しない場合、ETIMEOUT エラーが発生します。 |
|
maxTimeToBuffer |
4500 |
受信ファイルアップロードの受信を開始した後、受信機に接続されるのを待機する、指定されたライブ上流の最大ミリ秒数。Skipperは、アプリケーションのポリシーとコントローラーアクションでカスタムコードを実行できるように(たとえば、データベースのルックアップを実行するなど)、上流を一時停止してから、受信ファイルアップロード(たとえば、req.file('avatar').upload(...) )を目的のアップロードターゲット(ローカルディスク、S3、gridfsなど)に「接続」します。受信バイトは、Node.jsストリームに組み込まれたバッファリングとTCPバックプレッシャーの組み合わせを使用して管理されます。最大バッファ時間は、保留中のファイルアップロードでサーバーをあふれさせようとするサービス拒否攻撃から保護するための構成可能な防御層です。タイムアウトを超過すると、EMAXBUFFERエラーが発生します。これらのタイプの攻撃に対する最良の防御策は、コントローラーアクションの先頭で可能な限り早く受信ファイルアップロードを受信機に接続することです。 |
|
strict |
true |
有効にすると、受信HTTPリクエストのボディは、配列または辞書(つまり、プレーンなJavaScriptオブジェクト)であるように見える場合にのみ、JSONとして解析されます。それ以外の場合、無効にすると、ボディパーサーはJSON.parse() が受け入れるものを何でも受け入れます(null 、true 、false 、数値、二重引用符で囲まれた文字列など)。これらの他のタイプのデータは実際には一般的ではありませんが、技術的にはJSON互換です。したがって、この設定はデフォルトで有効になっています。 |
|
extended |
true |
URLエンコードされたリクエストボディで、角かっこ表記の複数のテキストパラメーター(たとえば、courseId[]=ARY%20301&courseId[]=PSY%20420 )を配列としてエンコードされたHTTPボディ(たとえば、courseId: ['ARY 301', 'PSY 420'], ... )で理解するかどうか。デフォルトで有効になっています。詳細については、https://github.com/expressjs/body-parser#extendedを参照してください。 |
|
onBodyParserError |
(詳細を参照) | Skipperがリクエストボディの解析中にエラーが発生した場合(たとえば、形式が正しくないJSONに遭遇した場合)に呼び出されるオプションの関数。この関数は、err 、req 、res 、next の4つの引数を受け入れます。Sailsは、400ステータスと、発生したエラーの詳細を示すメッセージでリクエストに応答するデフォルトの実装を提供します。onBodyParserError 関数が指定されていない場合、パーサーエラーはnext() に渡され、次に利用可能なエラー処理ミドルウェアによって処理されます。 |
パフォーマンスチューニングやその他の高度な構成を可能にするために、この方法でSkipperに渡すオプションは、基盤となるExpressボディパーサーにも渡されます。低レベルオプションの完全なリストについては、body-parserリポジトリを参照してください。
Express、Connect、Kraken、Loopback、またはPillarと互換性のあるほとんどのミドルウェアは、Sailsアプリでも使用できます。
sails.config.http.middleware
で構成されたこのHTTPミドルウェアスタックは、真のHTTPリクエストにのみ適用されることに注意してください。仮想リクエスト(たとえば、ソケット)を処理する場合は無視されます。router
という名前のミドルウェアは、アプリの明示的なルート(つまり、sails.config.routes
)と、ブループリント、ポリシーなどに対して挿入されるシャドウルートの両方を処理します。- キー
order
でカスタムミドルウェア関数を定義することはできません(sails.config.http.middleware.order
には特別な意味があるため)。