Nginxとは
Nginxは、webサーバーソフトウェアです。
- webサーバー
- リバースプロキシサーバー
- キャッシュサーバー
- ロードバランサー
上記のような役割を果たすことができます。
webサーバーの設定
ここではNginxをwebサーバーとして使う場合を念頭に設定方法を見ていきます。
設定ファイル
デフォルトの設定ファイルは、/etc/nginx/nginx.conf
です。(OSによってファイルの場所が異なることがある。)
/etc/nginx/conf.d/
配下に、追加で設定ファイルを置くことができます。~.conf
というファイルを設置してアプリごとや用途ごとに設定しておきます。これらはnginx.confでincludeで呼び出して使われます。
include /etc/nginx/conf.d/*.conf;
設定ファイルは、ディレクティブとパラメータで構成されます。
ディレクティブ パラメータ;
user nobody;
events
、http
、server
、location
ディレクティブはコンテキストとして参照されます。コンテキストは{}で囲まれた部分です。
コンテキスト外に置かれているディレクティブはmainコンテキストに属します。
user nobody; # a directive in the 'main' context
http {
# Configuration specific to HTTP and affecting all virtual servers
server {
# configuration of virtual server 1
location /one {
# configuration for processing URIs with '/one'
}
location /two {
# configuration for processing URIs with '/two'
}
}
server {
# configuration of virtual server 2
}
}
バーチャルサーバの設定
HTTPリクエストを処理するためには、設定ファイルにバーチャルサーバを定義します。
http {
server {
listen 127.0.0.1:8080;
# The rest of server configuration
}
}
serverディレクティブには、listenディレクティブを含める必要があります。これはNginxがlistenするIPアドレスとポート番号を指定します。IPアドレスが省略された場合は、全てのIPアドレスでlistenすることになります。
serverディレクティブを複数設定してバーチャルサーバを複数定義することもできます。
locationの設定
locationディレクティブを設定することで、リクエストURLに応じて処理を分けることができます。
server {
location / {
# URIが/に合致する場合の処理
}
location /images/ {
# URIが/images/に合致する場合の処理
}
}
Nginxは全てのlocationディレクティブのパラメータに対してURIをテストし、適合するディレクティブを適用します。
locationディレクティブのパラメータはプリフィックスの文字列または正規表現で記述します。
location /some/path/ {
...
}
location ~ \.html? {
...
}
# /some/path/document.htmlのようなリクエストが合致する。
locationを複数設定することで、URLによって処理をそれぞれ分けることができます。
server {
location / {
# プロキシに処理を渡す
proxy_pass http://www.example.com;
}
location /images/ {
# 静的ファイルを提供する
root /data;
}
}
proxy_passディレクティブは、指定したURLにあるサーバにリクエストを渡します。上の例では、"/images/"で始まらないURLへの全てのリクエストを、プロキシされたサーバに渡します。
rootディレクティブは静的なファイルが存在するパスを指示します。
エラーページの設定
error_pageディレクティブを使うことで、特定のエラーコードで返されるページを設定できます。
以下では404エラーのときに返すページを設定しています。
error_page 404 /404.html;
リダイレクトさせることもできます。
location /old/path.html {
error_page 404 =301 http:/example.com/new/path.html;
}
古いURLでアクセスしてきたときに301で新しいURLにリダイレクトします。(301コードはブラウザにページが移動したことを伝え、古いアドレスを新しいものに自動的に置き換えるように伝えます。)
変数
nginx.confファイルは変数を設定することができます。$記号が変数の印です。
独自の変数を定義することもできますが、定義済みの変数もあります。
例えば、$remote_addr
はクライアントのIPアドレス、$uri
は現在のURIの値を持っています。
まとめ
Nginxは、webサーバーソフトウェアです。
nginx.confがデフォルトの設定ファイルで、/etc/nginx/conf.d/
配下に独自に設定ファイルを追加します。
webサーバーとして使いたい場合、server
ディレクティブにバーチャルサーバを設定し、location
ディレクティブにURLごとの処理を指定します。
参考