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/

以上。

適当な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のヘルスチェックログを出力しない

empty_gif

nginxにおいて表題のディレクティブに関して。

■ 環境

  • Nginx 1.12.2
  • Amazon Linux

■ empty_gif

empty_gif“というディレクティブがあるようだ。1×1ピクセルのgifを返してくれるらしい。ELB配下のAmazonLinuxにおいて、healthcheckに使用してみている。

location = /healthcheck.html {
    empty_gif;
    access_log off;
    break;
}

上記を”server“ディレクティブ配下に設定している。”location“ディレクティブなのでそこしかないが…。アクセスログにも出力させないようにしてしまった。これで少し幸せになれた。

以上。

nginx + ModSecurityでcore dump

表題の通り core dump を起こしていた。

■ 環境

  • ModSecurity 2.9.2
  • nginx 1.12.1
  • CentOS 6.9

■ error.log

下記のようなエラーログが出力された。

2017/11/09 19:03:34 [alert] 47480#47480: worker process 47482 exited on signal 11 (core dumped)

最近この環境を作り直した時に気がついたのだが、ModSecurityの公式のページに下記のような記載が増えていた。

NOTE: Some instabilities in the Nginx add-on have been reported (see the Github issues page for details). Please use the "nginx_refactoring" branch where possible for the most up to date version and stay tuned for the ModSecurity version 4.

とのことなので、”nginx_refactoring“を試してみることにした。

■ nginx_refactoring

GitHubからzipでダウンロードし展開したところ、”configure“がない。`autogen.sh`があるので実行してみた。

$ ./autogen.sh
./autogen.sh: line 11: libtoolize: コマンドが見つかりません
./autogen.sh: line 12: autoreconf: コマンドが見つかりません
./autogen.sh: line 13: autoheader: コマンドが見つかりません
./autogen.sh: line 14: automake: コマンドが見つかりません
./autogen.sh: line 15: autoconf: コマンドが見つかりません
$

これらのパッケージをインストールする。対象パッケージは下記の通り。

$ sudo yum install libtool automake autoconf

再度`autogen.sh`を実行したところ問題なく”configure“が生成された。後は通常通り。

$ ./configure --enable-standalone-module --disable-mlogc
$make

nginxもリコンパイルしてインストールしなおしたところ、前回と同様のアクセスをしたがcoreは吐かれなくなった。とりあえずその場しのぎではあるのだが解決としておく。

以上。

■ 関連

nginx + ModSecurity