skillup

技術ブログ

サーバー・ネットワーク

set,ifディレクティブ,変数に関して

投稿日:2016年12月12日 更新日:

これまで基本的なnginxの設定についてみてきましたが、今回はset,ifディレクティブについてみていきます。

変数とset

nginxではコンフィグ内で変数を利用できます。setディレクティブをもといることで変数の定義が行えます。

set 変数名 値

システム自体が最初から定義している変数も多数あり、これらを利用することで柔軟な設定が可能です。

例えば1台のサーバーでユーザーごとに個別のサブドメインとドキュメントルートを用意したい場合などはバーチャルホストを複数設定することで解決することができます。

私はこの方法しかないと思っていましたが、変数を使えば一括で解決できますね。

下記のように書くことなどができます。

$hostというのはもともとnginx内で定義されている変数です。

また特定IPを禁止する方法などは下記のように書くことで解決できます。

ちょっとしたプログラミングのようなことができますが、一般的なプログラミング言語ほどの自由度はありません。できることは下記のようなことに限られます。

=    変数の一致
~    正規表現マッチ(大文字、小文字を区別)
~*  正規表現マッチ(大文字、小文字を区別しない)
-f   指定したファイルが存在する
-d  指定したディレクトリが存在する
-e  指定したファイル、ディレクトリまたはシンボリックリンクが存在するか
-x  指定したファイルに実行権限が存在するか

サーバー・インフラ徹底攻略にあった例を書かせていただきます。

上記は下記のような流れになっています。

  1. /var/tmp/do_mntというファイルがあればメンテ画面maintenanceに飛ぶ
  2. 管理者のIPアドレスの場合はその判定を行わない
  3. maintenanceは名前付きlocation(後述)に飛ばす

代表的な変数としては下記のようなものが有名です。

$remote_addr       クライアントリモートアドレス
$time_local           ローカルタイム
$request_uri         リクエストURI
$status                 HTTPステータスコード
$http_referer        リファラ
$http_user_agent  ユーザーエージェント
$host                   HOSTヘッダ
$query_string       クエリストリング

さらに詳しく知りたい方はNginx入門が詳しいですね。辞書のように活用できるかと思います。

今まであまり説明していなかったerror_pageディレクティブと名前付きlocationについて

error_page

HTTPステータスコード400,500番台のエラー発生時に表示するページを指定できます。

例えば404エラーが発生した際に、/404.htmlを表示するには下記のように表示します。

また403がおきたときに404で返し、あたかもファイルが存在しないかの用に見せる方法もあります。

名前付きlocation

名前付きlocationはその名の通り、locationディレクティブに名前を付ける機能です。例えば次にしめす設定はfaviconがない代わりに代わりの画像を表示する機能です。

上記の動きは下記のようになります。

  1. faviconがない場合は404エラー
  2. その際にerror_pageディレクティブで指定している@emptyが呼び出されます。
  3. @emptyではemtpy_gifディレクティブを利用し、ダミー画像を表示しています。※empty_gifというのはnginxに元々備わっている機能です。

-サーバー・ネットワーク
-, ,

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

sudoとsuについて

基本的なことの復習。 Contents1 su2 sudo2.1 wheel su Switch User。読んで字のごとくユーザーを切り替えるコマンドです。 su suzukiでユーザーsuzuki …

no image

jenkinsでのSSH鍵認証&herokuからのソース取得

jenkinsでGitからソースを取得するときに鍵認証をかけている場合はそれ用の設定が必要になります。 基本的な考え方ですが、userがjenkinsだったときに、ssh鍵認証やherokuでどのよう …

no image

ログ抽出コマンド特集 その1 cat+grep+sort

先日、メモリ使用率の調査に関して記事をかいたのですが、今度はそのログの収集や抽出をおこなってみようかと思います。 やりたいこと yyyy/MM/dd-HH:mm:ss  メモリ使用率(少数2桁まで)  …

no image

DNSの仕組み

本日はDNSについて。 とりあえず要点のみ DNSのざっくりとした仕組み ネットワーク上での住所を決める仕組み。 本来はIPがその役割を果たしている. http://211.111.111.111など …

no image

rewriteディレクティブ

リクエストURIを条件に応じて書き換えたり、リダイレクトする機能を使うときはrewriteを使います。こちら非常によく使う機能です。 具体的な例を見ていきましょう。 [crayon-5adfedbc3 …