upstream_response_time

nginxにおいて表題の件。

■ 環境

  • nginx 1.12.2

■ upstream

upstream“モジュールを使ってproxyしている。処理時間を出したいなと思い調べてみると”log_format“に”upstream_response_time“を出力すれば良いようだ。

Module ngx_http_upstream_module
https://nginx.org/en/docs/http/ngx_http_upstream_module.html

log_format main '$http_x_forwarded_for - $remote_user [$time_local] '
                '"$request" $status $body_bytes_sent '
                '"$http_referer" "$http_user_agent" '
                '$request_time $upstream_response_time';

ログファイルには下記のようになった。

XX.XX.XX.XX - - [19/Feb/2018:19:08:51 +0900] "GET /login HTTP/1.1" 200 2175 "http://example.com/login/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36" 0.043 0.043

今回は同一ホスト内へのproxyだったからか同じ数値になった。

以上。

■ 関連

nginxで処理時間をログに出力

Hostnameヘッダーが無い場合にレスポンスを返さない

nginxにおいて表題の通り。知らなかったのでメモ。

■ nginx

  • nginx 1.12.1

■ 444

How to prevent processing requests with undefined server names
http://nginx.org/en/docs/http/request_processing.html#how_to_prevent_undefined_server_names

上記に記載されていた。nginxでの独自ステータスコードとして”444“を返すようにすると、レスポンスを一切返さないようになるらしい。レスポンスはもちろん返らないのでアクセス元のクライアントからは何も返ってこない状態となる。

server {
    listen      80;
    server_name "";
    return      444;
}

なるほど。これは意外と便利そうである。

以上。

DirectoryIndex on nginx

表題の通り。apacheにおける”DirectoryIndex“ってnginxではどうやるんだっけ?というメモ。

■ 環境

  • Nginx 1.12.2
  • Amazon Linux

■ index

Module ngx_http_index_module
https://nginx.org/en/docs/http/ngx_http_index_module.html#index

デフォルト設定では”index.html”を見るようになっているが、諸事情により別のファイルを”/“でアクセスされた時に表示したい。

対象の”location“ディレクティブに”index“ディレクティブを追加する。

location / {
  :
  index index2.html index.html
  :
}

以上。

アクセス制限

nginxにおいて表題を行う。

■ 環境

  • Nginx 1.12.2
  • Amazon Linux

■ allow / deny

アクセス制限をかけたい”location“ディレクティブに、下記の様に設定してしまう。

location / {
  :
    allow XXX.XXX.XXX.XXX/32;
    allow YYY.YYY.YYY.YYY/24;
    deny all;
  :
}

指定したIPアドレス以外からのアクセスは403で返ることになる。

下記が参考になる。

RESTRICTING ACCESS WITH HTTP BASIC AUTHENTICATION
https://www.nginx.com/resources/admin-guide/restricting-access-auth-basic/

以上。

■ 関連

接続元IPで遮断

適当なfaviconの設定

nginxにおいて表題の通り。

■ 環境

  • Nginx 1.12.2
  • Amazon Linux

■ favicon

faviconへのアクセスログが大量に出ているので制御したい。設定ファイルに下記を記載する。

location = /favicon.ico {
    access_log off;
    return 200;
}

これでアクセスログが平和になった。

ブラウザに適当な画像をキャッシュさせ、アクセス自体を減らしたければ先日の”empty_gif“を用いて下記のようにすることもできる。

location = /favicon.ico {
    access_log off;
    empty_gif;
    return 200;
}

ただしこれを設定すると、ブラウザのタブ上でも何もアイコンがなくなるので少々わかりづらい。気にならないのであれば構わないが。

以上。

■ 関連

empty_gif

ELBのヘルスチェックログを出力しない