私は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
—
フランクファーマー
そして、それでも、access_logでのみ。error_logでは変数はまだ許可されていません。また、$ server_nameは、実際に探している変数ではない可能性があります。この場合、常に「_」に展開されるためです。おそらく実際に$ hostを探していたでしょう。
—
kolbyjack
私は1.0.0を使用していますが、$ hostのポインタに感謝します-それが私が達成しようとしていたことです。また、サーバー障害が存在することを知りませんでした-移行のおかげで、心が吹き飛ばされました。
—
Mahdi.Montgomery
最近のバージョンではこれは不可能ですか?
—
snh_nl