ログ名の変数-nginx


12

私はnginxに次のデフォルトのサーバーセットアップを持っています:

# Default HTTP Server
server {
  listen 80 default;
  server_name _;
  access_log /var/log/nginx/$server_name.access.log;
  error_log /var/log/nginx/$server_name.error.log;

  server_name_in_redirect off;

  location / {
    root   domain.com/public;
    index  index.php;
    try_files $uri index.php;
  }

  location ~     \.(html|jpg|jpeg|gif|png|ico|css2|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js)$ {
    root /path/to/domain.com/public;
    expires 30d;
    break;
  }

  charset utf-8;

  location ~ \.php$ {
    include /opt/nginx/conf/fastcgi_params;
    fastcgi_pass  127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_param  SCRIPT_FILENAME  /path/to/domain.com/public/index.php;   
  }

  location ~ \.(js|ico|gif|jpg|png|css)$ {
    root /path/to/domain.com/public;
  }
}

サーバーを指す複数のドメインがあります。私はここで達成しようとしていることのいずれかの形式でログを持っていることです/var/log/nginx/mydomain.com/access.log/var/log/nginx/mydomain.com.access.log

代わりに、私は取得してい/var/log/nginx/$server_name.access.logます。

ディレクトリ方式を試してみると、設定を確認するときにエラーが発生します nginx: [emerg] open() "/var/log/nginx/$server_name/access.log" failed (2: No such file or directory)

なぜnginxは変数をファイル名に渡さないのですか?

nginx / 1.0.0を使用する


どのバージョンを実行していますか?ログファイル名の変数は、0.7.4以降でのみ許可されます。wiki.nginx.org/HttpLogModule
フランクファーマー

3
そして、それでも、access_logでのみ。error_logでは変数はまだ許可されていません。また、$ server_nameは、実際に探している変数ではない可能性があります。この場合、常に「_」に展開されるためです。おそらく実際に$ hostを探していたでしょう。
kolbyjack

私は1.0.0を使用していますが、$ hostのポインタに感謝します-それが私が達成しようとしていたことです。また、サーバー障害が存在することを知りませんでした-移行のおかげで、心が吹き飛ばされました。
Mahdi.Montgomery

1
最近のバージョンではこれは不可能ですか?
snh_nl

回答:


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.