【結論】
・Nginxは、Webサーバとして
外部からのリクエストを受け取り、
適宜処理を加えてレスポンスを返す
・設定ファイルはコピペするだけでも
機能するが、デバックで躓く
【目次】
【本題】
Unicornの次はNginx
前回、下記の記事で、Unicornの設定ファイルを読み解きました。
ryoutaku-jo.hatenablog.com
ryoutaku-jo.hatenablog.com
今回は、Nginxの設定ファイルを読み解いていきたいと思います。
↓参考サイト
nginx連載4回目: nginxの設定、その2 - バーチャルサーバの設定 - インフラエンジニアway - Powered by HEARTBEATS
nginxでgzip圧縮を有効化する例 - UTALI
キャッシュについてまとめ - os_jupiterの日記
nginxパフォーマンスチューニング〜静的コンテンツ配信編〜 - Qiita
HTTP キャッシュ - HTTP | MDN
nginxのtry_filesの動作の確認 · GitHub
参考にする設定ファイル
今回も、いつもお世話になっている設定内容を参考にします。
前回同様、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時間!」