多くのユーザーがいるJSONデータを返すいくつかのWebサービスを書いています。
Go httpサーバーを使用する場合と比較して、サーバーの前でNginxを使用する利点は何ですか?
場合によります。
箱から出して、nginxをリバースプロキシとして前面に配置すると、次のことが可能になります。
Go HTTPサーバーは非常に優れていますが、willこれらのことのいくつかを行うために車輪を再発明する必要があります(これは素晴らしいことです。
私は、nginxを前面に配置するのがずっと簡単で、これが得意なことです。私のGoアプリケーションは、アプリケーションのようなことを行い、最小限のヘッダーなどのみを行います。それが必要です。 nginxを「悪い」ものとして前に置くことを見てはいけません。
Goの標準のhttpサーバーは問題ありません。アプリケーションがほとんど/唯一の「動的な」要求/応答である場合、それが本当に最良の方法です。
Nginxを使用して静的アセットを提供することもできますが、ほとんどの場合、標準のGoでも問題ありません。より高いパフォーマンスが必要な場合は、Varnishでできる限りCDNまたはキャッシュを使用する必要があります(たとえば)。
同じIPアドレスから異なるアプリケーションを提供する必要がある場合、nginxはプロキシが異なるアプリケーション間でリクエストを分散するための適切な選択です。私はより頻繁にそのようなことのためにツールボックスからVarnishまたはHAProxyを取り出します。
Gorilla web toolkit は以下を提供します:
schema
パッケージは、フォームの値を構造体に変換します。これは、Goのnet/http
とNGINXのようなHTTPサーバーとの間のギャップを埋めます。
個人的には、代わりにCDNをプラグインできることがわかっていれば、net/http
の上に別のHTTPサーバーをインストールして構成することは避けます。
net/http
は、標準ライブラリで最も強力なHTTPサーバーを持っていると思います。
https://blog.gopheracademy.com/caddy-a-look-inside/ から、Goはgzip、エラー、静的ファイル、ルーティング、httpヘッダーをミドルウェアを使用して処理できるようです。ブログの以下の行は、このようなリクエストをどのように処理するかを示しています。
logHandler(gzipHandler(fileServer))
彼らは本当に興味深い方法でエラーログを処理します。ミドルウェアがエラーコード(int)を返す限り、エラー処理ミドルウェアが自動的に処理します。 NginxのようにGoでサイト全体を設定することまで行ってきました。 「すべてのGopher Academy Webサイトのnginx.confファイルの長さは115行を超えていました。同等のCaddyfileは50行のみです。」