nginx すごいですね。conf がめちゃくちゃになるのが難点ですが。apache よりはマシですかね。
nginx + ngx_postgres + postgresql + ajax もすごいですね。 cgi とか fcgi とか wsgi とかなにそれ食えるの状態。
現在、”$” をエスケープする方法はない
http://forum.nginx.org/read.php?2,218536,218556#msg-218559
geo $d { default "$"; } set $var '$d'; # とかするしかない。 if ($foo ~ '^foo$'){ # これは大丈夫だったりする return 200; }
ngx_postgres などキャッシュ機能がない addon を使用するときは自分に向けて reverse proxy する
ngx_postgres はすげー便利ですがキャッシュ機能が見当たらないので reverse proxy で loopback して無理やりキャッシュします。
なんか奇妙な感じですが。
user www-data; http { # required: chwon www-data:www-data /var/cache/nginx/loopback proxy_cache_path /var/cache/nginx/loopback keys_zone=loopback:4m max_size=50m; # required: chown www-data:www-data /var/tmp/nginx proxy_temp_path /var/tmp/nginx; proxy_cache_key $scheme://$host$request_uri$is_args$args; server { location /foo/ { proxy_cache loopback; proxy_cache_valid 1m; proxy_pass http://127.0.0.1:80/path/; } } }
正規表現で文字列を抽出するときは if を使用する
if ($foo ~ "^(\d+)-(\d+)$"){ set $var "$1,$2"; }
ファイルを URL にマッピングする
ディレクトリじゃなくてファイルを直接指定したい時に。
location = /path/to/file { # "=" は必須です default_type "text/html"; # 指定しないと default_type の値が使用されます alias /home/www-data/html/file.html; }
application/json
nginx デフォルトの mime.types ファイルには json がないので次の行を追加しましょう。
application/json json; # nginx.conf などでこのように指定するのはダメ。types は 2 回以上使用できない types { application/json json; }