[nginx]include /etc/nginx/conf.d/*.conf; で別ファイルを読み込む
nginxの設定ファイルにincludeディレクティブがあるのですが、そのincludeディレクティブの役割について紹介します。
includeディレクティブとは?
includeディレクティブは別の設定ファイルを読み込む時に使用します。
一言にまとめても分かりづらいのでnginxの設定ファイルを確認してみます。
sudo nano /etc/nginx/nginx.conf
user nginx; worker_processes 1; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; #tcp_nopush on; keepalive_timeout 65; #gzip on; include /etc/nginx/conf.d/*.conf; }
httpディレクティブの先頭と末尾に記載されています。ここでは末尾のincludeディレクティブを例に紹介します。
includeディレクティブで別ファイルの設定を読み込む
include /etc/nginx/conf.d/*.conf;
include以下に引数を持ってくるわけですが、この引数には読み込みたいファイルパスを指定します。(絶対パス、相対パスどちらも可)
上記のコードの意味は該当パス以下の.confという拡張子の付いたファイルの全てを読み込むことを意味しています。
ベースとなるnginx.confファイルを修正せずに別ファイルでserverディレクティブの設定を書いたりします。
ちなみに別ファイルで記載されてserverディレクティブはベースファイルのnginx.confのhttpコンテキストの中で挙動することを前提に記述されます。
http { include /etc/nginx/mime.types; 〜中略〜 include /etc/nginx/conf.d/*.conf; }
例えば、/etc/nginx/conf.d/hoge.confという別ファイルを作成し、そこに諸々の設定を記述したとします。
この時にnginx.confファイルのinclude /etc/nginx/conf.d/*.conf;の記述でhoge.confという別ファイルに記述した設定が読み込まれることになります。
hoge.confの中身にはserverディレクティブを記載しリダイレクトやSSLなど諸々の処理を記載します。
server { listen 80; listen [::]:80; server_name example.com; return 301 https://$host$request_uri; }