stub_status

nginxにおいて表題のモジュールを試す。

■ 環境

  • Nginx 1.11.8
  • Docker for Mac 1.12.6
  • Mac OSX El Capitan

■ stub_status

設定ファイルを下記のように追加した。今回の環境では`/etc/nginx/conf.d/default.conf`にとりあえず追記して試している。

    location = /status {
        stub_status;
    }

入れているのは、”server“ディレクティブ内である。これでnginxを起動してアクセスしてみる。ちなみにDockerのnginxのコンテナは下記のように起動している。

docker run -ti --rm -p 8080:80 -v `pwd`/nginx.conf:/etc/nginx/nginx.conf nginx

アクセスしてみると下記のように取得できた。

$ curl localhost:8080/status
Active connections: 1
server accepts handled requests
5 5 8
Reading: 0 Writing: 1 Waiting: 0
$

たいした情報は得られないようで少々寂しい。

以上。

■ 関連

nginxでserver_tokensを表示させない

表題の通り。

■ 環境

  • nginx 1.11.6

■ server_tokens

デフォルトでは下記のように情報を取得されてしまう。※下記は少々細工

Server: nginx/1.11.6 (Ubuntu)

これを表示したくない。nginxを使用しているのが表示されてしまうのはしょうがないのであるが、設定ファイルを1行追記するだけでnginxのversion等が消えるのであれば、設定しておいて良いであろう。

下記の設定を”nginx.conf“の”http“ディレクティブに追記する。

http {
  :
  server_tokens off;
  :
}

ブラウザでも確認ができるが、`telnet`で確認してみる。対象のnginxはDockerで起動したものである。

$ telnet localhost 10080
Trying ::1...
Connected to localhost.
Escape character is '^]'.
GET / HTTP/1.0

HTTP/1.1 200 OK
Server: nginx
Date: Wed, 23 Nov 2016 05:37:05 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Tue, 15 Nov 2016 15:11:46 GMT
Connection: close
ETag: "582b25b2-264"
Accept-Ranges: bytesWelcome to nginx!

  :

Connection closed by foreign host.
$

Server: nginx“だけになった。

以上。

■ 関連

nginxでSSI

表題の通り。Server Side Include (SSI)を試してみる。

■ 環境

  • nginx 1.11.5
  • Docker 1.12.1
  • Mac OSX El Capitan

■ SSI

単純にファイルをincludeしたりしたい。がPHPだのrubyだのでテンプレートを、、というのは面倒なのでSSIで対応する。

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

設定ファイル(default.conf)は下記のようにした。

  1 server {
  2     listen       80;
  3     server_name  localhost;
  4     ssi on;
  :

これを反映させる。nginxはDockerで動かしている。

$ docker run -d --name nginx -v `pwd`:/usr/share/nginx/html:ro -v `pwd`/default.conf:/etc/nginx/conf.d/default.conf -p 10080:80 nginx

ここから本題のHTMLである。

2つのファイルを用意した。`include`する側のHTMLファイルと、`include`される側のHTMLファイルである。

`include`する側。

$ cat test.html
<!--#include virtual="/test2.html" -->
<div class="contents">ここはトップページです。(index.html)</div>
$

`include`される側。

$ cat test2.html
<!-- test2.html -->
<div class="header">ahahahaha</div>
<!-- test2.html --> 
$

実際にブラウザでアクセスすると`include`されているのがわかるであろう。ここでは`curl`で取得してみる。

$ curl localhost:10080/test.html
<!-- test2.html -->
<div class="header">ahahahaha</div>
<!-- test2.html -->
<div class="contents">ここはトップページです。(index.html)</div>
$

性能としてはどの程度になるのであろうか?いずれ計測してみよう。

以上。

■ 関連

nginxコンテナのDockerfile

表題の通り。

■ 環境

  • nginx
  • Docker for Mac 1.12.0-a
  • Mac OSX El Capitan

■ Dockerfile

nginxがどのようにコンパイル等されているのかと思ってDockerfileを確認しようと思った。

nginx – DockerHub
https://hub.docker.com/r/library/nginx/

ここから現状の”latest“リンクから確認すると、`apt−get`でパッケージをインストールしている。

  • nginx
  • nginx-module-geoip
  • nginx-module-image-filter
  • nginx-module-njs
  • nginx-module-perl
  • nginx-module-xslt

これらがインストールされていた。これだと先日のコンパイルオプションを変えたいなとなると、そう簡単にはいかない。。

ちなみに”alpine“のDockerfileを確認すると、Alpineのパッケージには存在しないのであろう、ソースコンパイルを行っていた。`configure`のオプションは下記のようである。

--prefix=/etc/nginx \
--sbin-path=/usr/sbin/nginx \
--modules-path=/usr/lib/nginx/modules \
--conf-path=/etc/nginx/nginx.conf \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--pid-path=/var/run/nginx.pid \
--lock-path=/var/run/nginx.lock \
--http-client-body-temp-path=/var/cache/nginx/client_temp \
--http-proxy-temp-path=/var/cache/nginx/proxy_temp \
--http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp \
--http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp \
--http-scgi-temp-path=/var/cache/nginx/scgi_temp \
--user=nginx \
--group=nginx \
--with-http_ssl_module \
--with-http_realip_module \
--with-http_addition_module \
--with-http_sub_module \
--with-http_dav_module \
--with-http_flv_module \
--with-http_mp4_module \
--with-http_gunzip_module \
--with-http_gzip_static_module \
--with-http_random_index_module \
--with-http_secure_link_module \
--with-http_stub_status_module \
--with-http_auth_request_module \
--with-http_xslt_module=dynamic \
--with-http_image_filter_module=dynamic \
--with-http_geoip_module=dynamic \
--with-http_perl_module=dynamic \
--with-threads \
--with-stream \
--with-stream_ssl_module \
--with-stream_geoip_module=dynamic \
--with-http_slice_module \
--with-mail \
--with-mail_ssl_module \
--with-file-aio \
--with-http_v2_module \
--with-ipv6 \

先日のものと少しオプションが違うようだ。

以上。

■ 関連

nginxコンテナのconfigureオプション

Dockerのコンテナにおいて表題の通り。nginxを触っていて、Dockerで公式に公開されているnginxのconfigureオプションはどうなっているのか?を調べてみた。

■ 環境

  • nginx
  • Docker for Mac 1.12.0
  • Mac OSX El Capitan

■ nginx

まずはnginxのコンテナを取得する。

$ docker pull nginx

コンテナを起動。

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              0d409d33b27e        11 weeks ago        182.8 MB
  :
$
$ docker run -ti --rm nginx /bin/bash
root@71abd441e30f:/#

あとはコマンドで取得が可能である。

root@71abd441e30f:/# which nginx
/usr/sbin/nginx
root@71abd441e30f:/#
root@71abd441e30f:/# nginx -V
nginx version: nginx/1.11.1
built by gcc 4.9.2 (Debian 4.9.2-10)
built with OpenSSL 1.0.1k 8 Jan 2015
TLS SNI support enabled
configure arguments: \
  --prefix=/etc/nginx \
  --sbin-path=/usr/sbin/nginx \
  --modules-path=/usr/lib/nginx/modules \
  --conf-path=/etc/nginx/nginx.conf \
  --error-log-path=/var/log/nginx/error.log \
  --http-log-path=/var/log/nginx/access.log \
  --pid-path=/var/run/nginx.pid \
  --lock-path=/var/run/nginx.lock \
  --http-client-body-temp-path=/var/cache/nginx/client_temp \
  --http-proxy-temp-path=/var/cache/nginx/proxy_temp \
  --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp \
  --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp \
  --http-scgi-temp-path=/var/cache/nginx/scgi_temp \
  --user=nginx \
  --group=nginx \
  --with-http_ssl_module \
  --with-http_realip_module \
  --with-http_addition_module \
  --with-http_sub_module \
  --with-http_dav_module \
  --with-http_flv_module \
  --with-http_mp4_module \
  --with-http_gunzip_module \
  --with-http_gzip_static_module \
  --with-http_random_index_module \
  --with-http_secure_link_module \
  --with-http_stub_status_module \
  --with-http_auth_request_module \
  --with-http_xslt_module=dynamic \
  --with-http_image_filter_module=dynamic \
  --with-http_geoip_module=dynamic \
  --with-http_perl_module=dynamic \
  --add-dynamic-module=debian/extra/njs-1c50334fbea6/nginx \
  --with-threads \
  --with-stream \
  --with-stream_ssl_module \
  --with-http_slice_module \
  --with-mail \
  --with-mail_ssl_module \
  --with-file-aio \
  --with-ipv6 \
  --with-http_v2_module \
  --with-cc-opt='-g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2' \
  --with-ld-opt='-Wl,-z,relro -Wl,--as-needed'
root@71abd441e30f:/#

上記の表示は少々見やすくする為に手を加えている。

以上。

■ 関連