経緯
nginxはよく聞くwebサーバーだけど、webサーバとしか思ってなかったから、どんなものなのかを調べてみました
webサーバーとしてのnginx
nginxの目標は、webサーバーのパフォーマンスを向上させ、最速のwebサーバーを生み出すことです。
単純なhtmlを配信するだけでなく、websocket、HTTP/2や複数の動画フォーマット等、様々なコンテンツ配信にも対応しています。
nginxはオープンソースで誰でも無料で使用できます。また、Linux、windows、macOSでも動かすことができます。
webサーバー以外の機能
大量の接続を処理できるnginxは、リバースプロキシやロードバランサーの役割も担うことができます。
一般的にNode.jsやPHPで構成された動的なサイトでは、コンテンツキャッシュやリバースプロキシとしてnginxを使用することで、アプリケーションの負荷を軽減することができます。
リバースプロキシとは
外部インターネットからサーバーへサクセスされる通信を中継する仕組みです。
リバースプロキシのメリット
-
リクエスト内容に応じたサーバーの選択
一つのURLの下で複数のサーバーを統合し、その内容に応じてリクエストを振り分けられます。 -
負荷分散
リバースプロキシの背後に同じ処理を行う複数のサーバーを用意しておけば、大量のアクセスが集まった場合でも各サーバーにアクセスを振り分けて分散できます。(ロードバランサーの役割) -
セキュリティ
悪意のある攻撃者がwebサーバーへ直接アクセスできなくなるため、webサイトの内容が改ざんされるリスクが低減されます。
また、リバースプロキシと認証サーバーを連携させることで、複数のアプリケーションへの認証・許可を行うシングルサインオンが実現できます。
ただ、一般的にDMZに設置されることが多いため、サイバー攻撃の対象となり危険性が高まりやすいので、定期的に設定やパッチを確認し、最新の状態に保つ必要があります。
Apacheとの比較
こちらの記事によくまとめられていました。
PHPやwordpressを用いる場合はApacheの方がいいみたいですね。
参考文献