無題の備忘録

IT技術について調べたことや学んだこと、試したこと記録するブログです。Erlang、ネットワーク、 セキュリティ、Linux関係のものが多いです。

Nginxを学ぶ1 - 導入編

Nginxとは

シンプル、軽量、高速なWebサーバとして人気なようだ。 オープンソースの最も有名なWebサーバとしてはApacheがあるが、その性能が不満だったために、性能を重視して開発されたのがNginxだとか。

Nginxの使い道

NginxとApacheはWebサーバとして競合にはあるが、この2つのWebサーバの用途は少し違った使われ方をするようだ。Apacheは動的で、比較的も重たい処理をするようなWebサービスを提供するため。Nginxは静的で、比較的小さい負荷の処理を高速に処理したい場合に使われる様子。

よく使われる構成

Nginxをリクエストを受け取るフロントエンドに配置し、そのバックに実質処理を行わせるサーバへのリクエストを転送させるように使う。 つまり、Nginxをロードバランサーとして使ったり、リバースプロキシとして使う構成だ。

主な機能

  • キャッシュによるリバースプロキシの高速化
  • ロードバランシング
  • モジュールアーキテクチャ
  • SSLサポート
  • HTTP/2サポート

その他の機能

  • ネームベースとIPベースの仮想サーバ
  • Keep-aliveとpipelined接続のサポート
  • URLリライト
  • レスポンスレートの制限
  • IPベースのGiolocation
  • ログフォーマットの変更

インストール方法(Ubuntu 16.04LTS)

$ sudo apt install nginx

インストール後、nignxは起動しているので、WebブラウザでインストールしたマシンのIPアドレスに接続すれば、次のような画面が表示される。

f:id:storkibis:20161127221610p:plain

ブラウザがなければ次のコマンドで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

今回はここまで。