Nginxの設定ファイルを読み解く

f:id:ryoutaku_jo:20190315161220p:plain

【結論】
・Nginxは、Webサーバとして
 外部からのリクエストを受け取り、
 適宜処理を加えてレスポンスを返す 

・設定ファイルはコピペするだけでも
 機能するが、デバックで躓く


【目次】


【本題】

参考にする設定ファイル

今回も、いつもお世話になっている設定内容を参考にします。
前回同様、Capistranoで自動デプロイする事を想定した設定です。

upstream app_server {
  server unix:/var/www/<アプリケーション名>/shared/tmp/sockets/unicorn.sock;
}

server {
  listen 80;
  server_name <Elastic IP>;

  root /var/www/<アプリケーション名>/current/public;

 location ^~ /assets/ {
    gzip_static on;
    expires max;
    add_header Cache-Control public;
    root   /var/www/<アプリケーション名>/current/public;
  }

  try_files $uri/index.html $uri @unicorn;

  location @unicorn {
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_redirect off;
    proxy_pass http://app_server;
  }

  error_page 500 502 503 504 /500.html;
}

ソケットの設定

upstream app_server {
  server unix:/var/www/<アプリケーション名>/shared/tmp/sockets/unicorn.sock;
}

上記は、Unicornとの通信を行う上で必要なソケットの設定内容です。
Unicorn側で生成したソケットファイルを参照しています。

バーチャルサーバの設定

server {
  listen 80;
  server_name <Elastic IP>;

  root /var/www/<アプリケーション名>/current/public;

 location ^~ /assets/ {
    gzip_static on;
    expires max;
    add_header Cache-Control public;
    root   /var/www/<アプリケーション名>/current/public;
  }

次がバーチャルサーバの設定です。
ここでは、ドメインを管理したりする為の記述を行います。

listenで、使用するポート番号とIPアドレスを指定します。
root で、アクセス時にどのディレクトリを参照するか指定します。

locationではURIのパス毎の設定を記述できます。

gzip_static on;

指定したフォルダへのリクエストに対して、
gzip圧縮されたファイルの配信を試みます。
ファイルサイズを小さくして、ロード時間を短縮するのが目的です。
もしクライアントがgzip圧縮に対応していない場合は非圧縮のファイルを配信します。

expires max;

コンテンツのキャッシュ有効期限を設定します。
max なので、常に有効になります。

add_header Cache-Control public;

HTTPレスポンスヘッダにCache-Controlヘッダを追加します。
publicなので、どのキャッシュでもレスポンスを保存します。

root で、アクセス時にどのディレクトリを参照するか指定します。

  try_files $uri/index.html $uri @unicorn;

アクセスしたURLに対応したファイルがあるか探す。
静的・動的コンテンツの処理の振り分けを行う。

まず、<アクセスしたURL>/index.html というファイルを探し、
その次にアクセスしたURLのファイルを探し、
それも無ければ、次に説明するlocation @unicornの処理を行う。

  location @unicorn {
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_redirect off;
    proxy_pass http://app_server;
  }

Unicornに送信するヘッダの情報を編集します。

  error_page 500 502 503 504 /500.html;
}

エラーページをカスタマイズします。

《今日の学習進捗(3年以内に10000時間に向けて)》

学習開始からの期間 :98日
今日までの合計時間:939h
一日あたりの平均学習時間:9.6h
今日までに到達すべき目標時間:895h
目標との解離:44h
「10,000時間」まで、

残り・・・「9061時間!」