【Nginx】設定ファイルとは(nginx.conf、conf.d、sites-available、uwsgi_paramsなど)
2021.11.29 /
本記事ではWebサーバーソフトウェアのNginxにおける、設定ファイルについて詳しく解説していきます。
設定ファイルは/etc/nginxディレクトリに格納されており、nginx.confやuwsgi_params、conf.d、sites-availableといったファイルやディレクトリが存在します。
それぞれが重要な役割を持っており、NginxでWebサーバーを構築するためにはそれぞれの役割を知っておく必要があります。
本記事を通して各設定ファイルについて学んでいきましょう。
Nginxとは
NginxとはOSS(Open Source Software)のWebサーバーソフトウェアです。
近年WebサーバーとしてNginxを利用する人が急増しています。現在ではApacheに次いで2位のシェアを誇ります。
*2020年8月にNetcraftという会社が出した調査によるとNginxがApacheを抜きシェア1位になったみたいです。
私はUbuntuにNginxをインストールし、DjangoのWebサーバーとして利用しています。UbuntuにNginxをインストールする方法は以下記事をご参照ください。
【Ubuntu】Nginxをインストールする方法(特徴と利用用途)
またUbuntuはラズベリーパイ(Raspberry Pi)にインストールして使っています。ラズパイにUbuntuをインストールしてみたい方は以下記事を参考にしてみてください。
【ラズパイ】Webアプリケーション用にUbuntuをインストールする(Raspberry Pi Imager)
Nginx:設定ファイルとディレクトリ
Nginxには複数の設定ファイルが存在します。それら設定ファイル群は下記ディレクトリに格納されています。
/etc/nginx
このnginxディレクトリには次の設定ファイルがあります。
ファイル名 | 説明 |
---|---|
nginx.conf | 全般の設定 |
uwsgi_params | uWSGI設定 |
scgi_params | SCGI設定 |
fastcgi_params | FastCGI設定 |
mime.types | MIMEタイプと拡張子を定義 |
nginxが起動すると/etc/nginx/nginx.conf設定ファイルが読み込まれ、この設定ファイルの内容に基づいた構成で起動します。
nginxディレクトリには次のディレクトリも格納されています。
- conf.d
- sites-available
- sites-enabled
Nginxでは独自の設定ファイルを置く用のディレクトリとして、conf.dやsites-available、sites-enabledが用意されています。
これらの利用方法については後述いたします。
Nginxのディレクトリ構成を以下にまとめます。
nginx
├── nginx.conf
├── uwsgi_params
├── scgi_params
├── fastcgi_params
├── mime.types
├── conf.d
│ └── default.conf
├── nginx.conf
├── sites-available
│ └── default
└── sites-enabled
└── default -> /etc/nginx/sites-available/default
設定ファイル
nginx.confファイル
Nginxの設定ファイルの一つnginx.confは、Nginxの起動時に読み込まれます。
Nginxの全般的な設定が記述されており、このファイルでNginxを制御します。
nginx.confは以下のように記述されています。
user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;
events {
worker_connections 768;
# multi_accept on;
}
http {
…
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
上記nginx.confの内容を見ると、include文で/etc/nginx/conf.dディレクトリと/etc/nginx/sites-enabledディレクトリ内のファイルを読み込んでいます。
どちらのディレクトリも設定ファイルに追加設定を行いたい場合に利用します。
uwsgi_params
uwsgi_paramsはuWSGI用のパラメータ定義ファイルです。
中身は以下のようになっております。
uwsgi_param QUERY_STRING $query_string;
uwsgi_param REQUEST_METHOD $request_method;
uwsgi_param CONTENT_TYPE $content_type;
uwsgi_param CONTENT_LENGTH $content_length;
uwsgi_param REQUEST_URI $request_uri;
uwsgi_param PATH_INFO $document_uri;
uwsgi_param DOCUMENT_ROOT $document_root;
uwsgi_param SERVER_PROTOCOL $server_protocol;
uwsgi_param REQUEST_SCHEME $scheme;
uwsgi_param HTTPS $https if_not_empty;
uwsgi_param REMOTE_ADDR $remote_addr;
uwsgi_param REMOTE_PORT $remote_port;
uwsgi_param SERVER_PORT $server_port;
uwsgi_param SERVER_NAME $server_name;
uwsgi_paramsはPythonによるWebアプリケーション(DjangoやFlask)+Nginx+uWSGIの構成のときに利用されることが多いです。
uWSGIとは
uWSGIはWSGI(Web Server Gateway Interface)サーバーの1つです。役割としてWebサーバーとPythonによるWebアプリケーション(Djangoなど)を結びつける機能を提供します。
つまりuWSGIはDjangoなどのWebアプリケーションを稼働させるアプリケーションサーバーと言えます。
Webアプリケーション(DjangoやFlask)+Nginx+uWSGI構成では、ブラウザがリクエストを送りレスポンスが返るまでの流れは次のようになります。
ブラウザ <-> Webサーバー(Nginx)<-> Unixソケット <-> アプリケーションサーバー(uWSGI) <-> Webアプリケーション(Djangoなど)
ブラウザからのリクエストはNginxで受け取り、Nginxはsocketを通してuWSGIに渡します。
ディレクトリ
conf.dディレクトリ
conf.dディレクトリ内のファイルは、起動時に読み込まれるnginx.confファイルの以下include文から読み込まれます。
include /etc/nginx/conf.d/*.conf;
conf.dディレクトリには、nginx.confに追記したい設定を記述した設定ファイルを置きます。
設定ファイルの拡張子はconfです。
conf.dディレクトリに置いた設定ファイルはすべて読み込まれます。
中小規模のサイトではこのディレクトリで運用していきます。
sites-availableディレクトリ
conf.dディレクトリと同様にsites-availableディレクトリには、nginx.confに追記したい設定を記述した設定ファイルを置きます。
つまり独自の設定ファイルを置くディレクトリということです。
nginx.confファイルからsites-availableディレクトリは直接読み込まれません。nginx.confはsites-enabled内のファイルを読み込みます。
そのため独自設定ファイルの実体はsites-availableに格納し、シンボリックリンクをsites-enabledディレクトリに作成します。
conf.dディレクトリは中小規模サイトで利用しますが、sites-availableは多くのバーチャルホストを運用するような大規模サイトで利用します。
バーチャルホストとは、一台のサーバーで複数のドメインを割り当て、外部からは独立したサーバーであるかのように運用すること
ドメイン毎に設定ファイルを作成し、実際に利用するものに対してシンボリックリンクを作成します。
またsites-availableディレクトリには初めからdefaultというファイルが存在します。これはサンプルの設定ファイルという位置づけです。
## /etc/nginx/sites-available/default
# Default server configuration
#
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
server_name _;
location / {
try_files $uri $uri/ =404;
}
}
#server {
# listen 80;
# listen [::]:80;
# server_name example.com;
# root /var/www/example.com;
# index index.html;
# location / {
# try_files $uri $uri/ =404;
# }
#}
defaulのシンボリックリンクはすでにsites-enabledディレクトリに作成されていますので、defaulの内容を変更して利用することもできます。
独自設定ファイルの作成
新たに設定ファイルを作成する場合(設定ファイルをドメイン毎に作りたい場合など)、デフォルトである設定ファイルdefaultを編集して利用することもできますし、コピーして新たな設定ファイルを作成することもできます。
cp /etc/nginx/sites-available/default /etc/nginx/sites-available/ファイル名
defaultまたはコピー生成した設定ファイルをvimコマンドで編集し、独自設定ファイルとして作成していきます。
シンボリックリンクの作成
設定ファイルを編集したら、シンボリックリンクを作成します。
シンボリックリンクはNginxが起動時に読み取る/etc/nginx/sites-enabledディレクトリに作成します。
これにより作成した設定ファイルが読み込まれるようになります。
ln -s /etc/nginx/sites-available/ファイル名 /etc/nginx/sites-enabled/
最後にNginxを再起動することで作成した独自設定ファイルが読み込まれます。
systemctl restart nginx
sites-enabledディレクトリ
sites-enabledディレクトリにはsites-available内の独自設定ファイルのシンボリックリンクを格納します。
nginx.confの以下コードにより、sites-enabledに保存したシンボリックリンクは読み込まれるようになっています。
include /etc/nginx/sites-enabled/*;
sites-availableとsites-enabledを利用した独自設定ファイルの作成手順は以下の通りです。
- sites-availableにあるdefaultをコピー
- コピーしたdefaultを変更して独自設定ファイルを作成
- 作成した独自設定ファイルのシンボリックリンクをsites-enabledに作成
- Nginxを再起動
上記の流れで独自設定ファイルを作成できます。
まとめ
本記事「【Nginx】設定ファイルとは(nginx.conf、conf.d、sites-availableなど)」はいかがでしたか。
WebサーバーをNginxで構築するならば避けては通れないのが設定ファイルです。
これをきちんと設定できないとWebサーバーとして機能しませんので、わからない点については本サイトを通して学んでいってください。