web-dev-qa-db-ja.com

nginxのアクセスログから取得パラメーターを非表示にする

私たちのサービスに関する統計を表示するためにアクセスログを有効にしたいのですが、私が抱えている問題は、アクセスログ形式の$ requestがすべてのGETパラメーターを保存することです(リクエストの一部であるため、これは理にかなっています)。

しかし、私はこの情報を隠したいので、ログでこれを見る代わりに:

98.207.174.147 - - [26/Apr/2014:23:59:09 +0000] "GET /v1/api.json?parameter1=value1&paramter2=value2" HTTP/1.1" 200 13449 "-" "httperf/0.9.0"

を見たいのですが

98.207.174.147 - - [26/Apr/2014:23:59:09 +0000] "GET /v1/api.json" HTTP/1.1" 200 13449 "-" "httperf/0.9.0"
5
rorra

log_formatngx_http_log_moduleディレクティブを使用できます。

たとえば、次の形式では、クエリ文字列なしでURIのみが表示されます。

http {
       log_format combined_no_query '$remote_addr - $remote_user [$time_local] '
           '"$uri" $status $body_bytes_sent '
           '"$http_referer" "$http_user_agent"';
       //other configs ...
     }

 server {
       access_log /var/log/nginx/access.log combined_no_query
       //... 
      }

クエリ文字列なしでURIのみをログに記録するために使用される$uri変数に注意してください。

log_formatディレクティブのドキュメント: http://nginx.org/en/docs/http/ngx_http_log_module.html

その他の変数: http://nginx.org/en/docs/http/ngx_http_core_module.html#var_uri

10
hassansin