9.4. Nginxとリバースプロキシ
Nginxは高速で動作する負荷に強いWebサーバ。
特徴としてリバースプロキシやメールプロキシの機能も持つ。
9.4.1. Nginxの設定
Nginxは1つのマスタープロセスと複数のワーカープロセスから構成される。
- ワーカープロセス … クライアントからのHTTPリクエストを受け付け処理する
- マスタープロセス … ワーカープロセスを管理するプロセス
Nginxの設定ファイルは/etc/nginx/nginx.confとなる。
CentOSにおけるNginxの主要設定ファイルは以下の通り。
| ファイル | 説明 | 
|---|---|
| /etc/nginx/nginx.conf | メイン設定ファィル | 
| /etc/nginx/conf.d/default.conf | デフォルトサーバの設定ファイル | 
| /etc/nginx/conf.d/ssl.conf | SSLの設定ファイル | 
| /etc/nginx/conf.d/virtual.conf | バーチャルホストの設定ファイル | 
設定はディレクティブに値を指定する形で記述する。
ディレクティブ 値;
ディレクティブ {
    ディレクティブ 値;
}またnginx.confの基本構造は以下の通り。
events {
    # 接続処理に関する記述
}
http {
    # httpサーバの設定
    server {
        # HTTPサーバ毎の設定
        location パス {
            # URI毎の設定
        }
    }
}
mail {
    # メールプロキシ関連の設定
}またnginxの主要なディレクティブは以下の通り。
| ディレクティブ | コンテキスト | 説明 | 
|---|---|---|
| include | すべて | 値の設定ファイルを読み込む | 
| http {} | main | httpサーバとしての設定 | 
| server {} | main | バーチャルホストの設定 | 
| user | main | workerプロセスの実行ユーザ | 
| worker_processes | main | workerのプロセス数(CPUコア数) | 
| worker_connections | events | 1つのworkerプロセスが同時処理できる最大接続数 | 
| log_format | http | アクセスログの書式形式 | 
| access_log | http,server,location | アクセスログのパスとログレベル | 
| error_log | main,http,server,location | エラーログのパスとログレベル | 
| listen | server | リクエストを受け付けるポート番号 | 
| server_name | server | バーチャルホストのサーバ名 | 
| proxy_pass | location | プロキシ先の指定 | 
| fastcgi_pass | location | FastCGFIサーバの指定 | 
| fastcgi_param | http,server,location | FastCGIサーバに渡すパラメータの設定 | 
| location プレフィックス URIパス条件{} | server, location | 条件マッチのリクエストURIの設定 | 
| keepalive_requests | http,server,location | 一度の接続で受け付けできるリクエスト数の上限 | 
| keepalive_timeout | http,server,location | キープアライブのタイムアウト時間 | 
| server_tokens | http,server,location | バージョン番号の表示/非表示 | 
| root | http,server,location | ドキュメントルート | 
| index | http,server,location | インデックスファイル | 
| autoindex | http,server,location | インデックスリストの表示/非表示 | 
| error_page | http,server,location | エラーコードとエラーページのURI | 
| proxy_set_header | http,server,location | プロキシ先に送られるリクエストヘッダフィールドの再定義 | 
| proxy_pass_header | http,server,location | プロキシ先からクライアントへの通過を許可するヘッダフィールドの指定 | 
9.4.2. リバースプロキシの設定
Nginxはリバースプロキシとしてもよく利用される。
リバースプロキシの設置によりWEBサーバの負荷が軽減できる。
設定例は以下の通り。
server {
    location /{
        proxy_page http://localhost:8080
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}nginxコマンド
nginx -tコマンドによりnginx.confファイルの構文をチェックできる。
nginx -t
# 設定の再読み込み
nginx -s reload