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(後述)に飛ばす

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

さらに詳しく知りたい方は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

journald

CentOS7では従来のsyslogデーモンと並行してjournaldというログ管理サービスがあります。 Contents1 コマンド一覧2 参考図書・リンク コマンド一覧 [crayon-6657c …

no image

クロスドメインがらみのajax

ajaxで別ドメインに対して、プログラムを実行したい時に注意すべきことなどを。 Contents1 ログ、レスポンスヘッダをとにかく追う2 特定ドメインからの許可3 フレームワーク側での認証ロジック( …

no image

TLS通信の基礎など

今のプロジェクトでVPN環境を変えたところ、Dockerのpullでいきなりエラーが・・・ WindowsにWSL2を使ってubuntuを入れているのですが、WindowsのCA証明書の追加をubun …

no image

vagrant share

実はvagrantを使って仮想環境を一時的ではありますが、webから見ることができます。 1 まずはhttps://atlas.hashicorp.com/account/newにてアカウント登録。そ …

no image

ファイルアップロード・ダウンロードに関するシェルスクリプト

ファイルのアップロードやダウンロードに関するシェルスクリプトなんぞを。 地味ですが、以外に登場頻度は高いかと。 Contents1 FTP1.1 ダウンロード1.2 アップロード2 SCP2.1 アッ …

アーカイブ