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.confSSLの設定ファイル
/etc/nginx/conf.d/virtual.confバーチャルホストの設定ファイル

設定はディレクティブに値を指定する形で記述する。

ディレクティブ 値;

ディレクティブ {
    ディレクティブ 値;
}

またnginx.confの基本構造は以下の通り。

events {
    # 接続処理に関する記述
}

http {
    # httpサーバの設定
    server {
        # HTTPサーバ毎の設定
        location パス {
            # URI毎の設定
        }
    }
}

mail {
    # メールプロキシ関連の設定
}

またnginxの主要なディレクティブは以下の通り。

ディレクティブコンテキスト説明
includeすべて値の設定ファイルを読み込む
http {}mainhttpサーバとしての設定
server {}mainバーチャルホストの設定
usermainworkerプロセスの実行ユーザ
worker_processesmainworkerのプロセス数(CPUコア数)
worker_connectionsevents1つのworkerプロセスが同時処理できる最大接続数
log_formathttpアクセスログの書式形式
access_loghttp,server,locationアクセスログのパスとログレベル
error_logmain,http,server,locationエラーログのパスとログレベル
listenserverリクエストを受け付けるポート番号
server_nameserverバーチャルホストのサーバ名
proxy_passlocationプロキシ先の指定
fastcgi_passlocationFastCGFIサーバの指定
fastcgi_paramhttp,server,locationFastCGIサーバに渡すパラメータの設定
location プレフィックス URIパス条件{}server, location条件マッチのリクエストURIの設定
keepalive_requestshttp,server,location一度の接続で受け付けできるリクエスト数の上限
keepalive_timeouthttp,server,locationキープアライブのタイムアウト時間
server_tokenshttp,server,locationバージョン番号の表示/非表示
roothttp,server,locationドキュメントルート
indexhttp,server,locationインデックスファイル
autoindexhttp,server,locationインデックスリストの表示/非表示
error_pagehttp,server,locationエラーコードとエラーページのURI
proxy_set_headerhttp,server,locationプロキシ先に送られるリクエストヘッダフィールドの再定義
proxy_pass_headerhttp,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