読者です 読者をやめる 読者になる 読者になる

CubicLouve

Spring_MTの技術ブログです。https://github.com/SpringMT (http://spring-mt.tumblr.com/ からの移転)

nginxのconfの内容をdumpする

nginx

nginxのconfですが、includeとか大量にしていると、うっかり上書きされててハマったことないですか?

自分は最近ドハマりして、イラッとして、confをdumpできるようにならなかと調べてみました。

で、最新のnginxのソースcloneして読んでたらもうあるじゃんと思ったのですが、 自分のマシンに入ってたnginx(1.6.2)にないので、調べてみたら20150/05/15に入った変更だったのですね。。。

github.com

で、1.9.3を手元でコンパイルして試してみました。

nginxのコマンドオプションに-Tが追加されて、これを使うと、confファイルが吐出されるようになります。

# /foo/bar/nginx-1.9.3/objs/nginx -h
nginx version: nginx/1.9.3
Usage: nginx [-?hvVtTq] [-s signal] [-c filename] [-p prefix] [-g directives]

Options:
  -?,-h         : this help
  -v            : show version and exit
  -V            : show version and configure options then exit
  -t            : test configuration and exit
  -T            : test configuration, dump it and exit
  -q            : suppress non-error messages during configuration testing
  -s signal     : send signal to a master process: stop, quit, reopen, reload
  -p prefix     : set prefix path (default: /usr/local/nginx/)
  -c filename   : set configuration file (default: conf/nginx.conf)
  -g directives : set global directives out of configuration file

dumpされる内容はこんな感じ。

# configuration file /nginx.conf:
include ../hoge.conf;
worker_processes 8;

events {
    accept_mutex off;
    worker_connections 8192;
    use epoll;
}

http {
    server_names_hash_bucket_size 64;
    upstream hoge {
        server 127.0.0.1:3000;
    }

    server {
        include ../hoge1.conf;
        listen 80;
        client_max_body_size 500M;
        location / {
            proxy_pass http://hoge;
        }
        keepalive_timeout 5;
        keepalive_requests 5;
    }
}

# configuration file ../hoge.conf:
pid                   /var/run/nginx.pid;
user                  nginx;
worker_rlimit_nofile  65535;

# configuration file ../hoge1.conf:
include           ../mime.types;
default_type               application/octet-stream;

gzip                       on;


# configuration file ../mime.types:

types {
    text/html                             html htm shtml;
    text/css                              css;
    text/xml                              xml;
    image/gif                             gif;
    image/jpeg                            jpeg jpg;
    application/x-javascript              js;
    application/atom+xml                  atom;
    application/rss+xml                   rss;
}

とりあえずconfファイルを出すだけなのか。。。

ネストされている、confも全部だしてくれます。

includeされたファイルを反映させて、最終的に適用される値が出てくるわけではないので、もう一工夫いるなあ。