HTTPリクエストを受け付けるアドレス、ポート番号を指定します。
Apacheのlistenディレクティブと同様ですね。
書式:
listen アドレス:ポート番号;
例
listen 127.0.0.1:8000; //IPアドレスとポート番号を指定した例 listen 127.0.0.1; //IPアドレスのみ指定した例 listen 8000; //ポート番号のみ指定した例 listen *:8000; //IPアドレスをメタキャラクタ「*」で指定した例 listen localhost:8000; //ホスト名とポート番号を指定した例
但し、細かく見ていくとこのlistenディレクティブは、もっと多くの細かい設定が可能です。
例えば、serverディレクティブが複数存在した場合に、デフォルトではどのserverディレクティブとするかを指定する「default_server」。指定したポートへのリクエストではhttpsを許可する「ssl」。IPv6のみ許可する「ipv6only」などなどです。
また、ポート指定でなく、ソケット指定にすることも可能です。その場合には、ソケット用のオプション指定が可能になります。
仮想Webサーバの名前を決めるディレクティブです。
書式:
server_name サーバ名;
例
server_name localhost
次のように複数設定することもできます。
この場合は、最初の名前がプライマリとなります。
server_name example.com www.example.com;
次のようにアスタリスク記号で最初、もしくは最後をワイルドカード指定することができます。
ここには何が入ってもOKという意味です。
server_name example.com *.example.com www.example.*;
正規表現を用いることもできます。
server_name www.example.com ~^wwwd+.example.com$;
ワイルドカードや正規表現を用いると、複数のサーバ名がマッチしてしまう場合もあり得ます。
その場合は、
1.完全一致
2.アスタリスクから開始する最大長ワイルドカード
3.アスタリスクで終了する最大長ワイルドカード
4.正規表現に最初にマッチしたもの
の順で採用されます。
サーバで扱う文字コードを指定するディレクティブです。
書式:
charset 文字コード;
例
charset utf-8;
コメントアウトされていますが、デフォルトの設定では「koi8-r」というロシア語用の文字コードが指定されているのが面白いですね(Nginxの開発者Igor Sysoevはロシア系の方)。
httpディレクティブにて指定されていたaccess_logに同じです。
このserverのaccess_logと他のserverのaccess_logを分けたいようなときは、ここに指定すればよいですね。
特定のエラーコードに対するURIを指定します。例えば404ステータスが発生したら/404.htmlを表示するといったことです。
このディレクティブは未指定の場合は手前のレベルの内容を引き継ぎます。
書式:
error_page レスポンスコード URI;
例
error_page 404 /404.html; error_page 500 502 503 504 /50x.html;
また、次のようにレスポンスコードを書き換えることも可能です。
error_page 404 =200 /empty.html;
この場合、404エラーの場合、/empty.htmlにリダイレクトし、レスポンスコード200を返します。
また、次のようにすると、レスポンスコードが404の場合、/404.phpで処理が行われ、そのレスポンスコードが最終的に返ります。
error_page 404 = /404.php;
次のように、URLを指定することも可能です。
error_page 403 http://example.com/forbidden.html;
この場合は、デフォルトでは301がレスポンスコードとして返されます。
次のように301, 302, 303, 307、といったリダイレクトを意味するレスポンスコードを指定することもできます。
error_page 404 =301 http://example.com/notfound.html;