Nginxを学ぶ1 - 導入編
Nginxとは
シンプル、軽量、高速なWebサーバとして人気なようだ。 オープンソースの最も有名なWebサーバとしてはApacheがあるが、その性能が不満だったために、性能を重視して開発されたのがNginxだとか。
Nginxの使い道
NginxとApacheはWebサーバとして競合にはあるが、この2つのWebサーバの用途は少し違った使われ方をするようだ。Apacheは動的で、比較的も重たい処理をするようなWebサービスを提供するため。Nginxは静的で、比較的小さい負荷の処理を高速に処理したい場合に使われる様子。
よく使われる構成
Nginxをリクエストを受け取るフロントエンドに配置し、そのバックに実質処理を行わせるサーバへのリクエストを転送させるように使う。 つまり、Nginxをロードバランサーとして使ったり、リバースプロキシとして使う構成だ。
主な機能
その他の機能
- ネームベースとIPベースの仮想サーバ
- Keep-aliveとpipelined接続のサポート
- URLリライト
- レスポンスレートの制限
- IPベースのGiolocation
- ログフォーマットの変更
インストール方法(Ubuntu 16.04LTS)
$ sudo apt install nginx
インストール後、nignxは起動しているので、WebブラウザでインストールしたマシンのIPアドレスに接続すれば、次のような画面が表示される。
ブラウザがなければ次のコマンドでhtmlを取得して確認できる
$ curl http://192.168.11.13 <!DOCTYPE html> <html> <head> <title>Welcome to nginx!</title> <style> body { width: 35em; margin: 0 auto; font-family: Tahoma, Verdana, Arial, sans-serif; } </style> </head> <body> <h1>Welcome to nginx!</h1> <p>If you see this page, the nginx web server is successfully installed and working. Further configuration is required.</p> <p>For online documentation and support please refer to <a href="http://nginx.org/">nginx.org</a>.<br/> Commercial support is available at <a href="http://nginx.com/">nginx.com</a>.</p> <p><em>Thank you for using nginx.</em></p> </body> </html>
設定ファイルの場所
aptでnginxをインストールした場合は、下記に設定ファイルが配置されている。
$ sudo vi /etc/nginx/nginx.conf
Nginxの起動、停止、設定ファイルのリロード
もし起動していない場合は、次のコマンドで起動する
$ sudo nginx
次のコマンドで直ちにNginxを停止する
$ sudo nginx -s stop
次のコマンドで、現在処理中のプロセスを待って停止する(graceful shutdown)
$ sudo nginx -s quit
ただし、このコマンドの実行はNginxを起動させたユーザが実行しなければならない。
設定ファイルを変更したあとに、Nginxにシグナルを送信して、設定ファイルを読み込ませたい場合は、次のコマンドを実行する
$ sudo nginx -s reload
このシグナルを受け取ったら、新しい設定ファイルのシンタックスをチェックして、設定を適用しようとする。
もし、成功すれば、マスタープロセスは新しいワーカプロセスを起動させて、古いワーカープロセスに終了するようにメッセージを送信する。
それ以外の場合は、マスタープロセスは設定ファイルを読み込みをロールバックし、古い設定のまま動作を続ける。古いワーカプロセスはシャットダウンコマンドを受け取って、新しい接続の受付を終了させ、現在のリクエストのサービスを続け、それが終われば終了する。
現在のマスタープロセスは次のディレクトリのpidファイルに記載されている aptでnginxをインストールした場合は、下記に設定ファイルが配置されている。
$ cat /run/nginx.pid 1236
killコマンドで、graceful shutdownをする場合は、次のコマンドを使う
$ sudo kill -s QUIT 1236
今回はここまで。