Variabel dalam nama log - nginx

12

Saya memiliki pengaturan server default berikut di 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;
  }
}

Saya memiliki beberapa domain yang menunjuk ke server. Yang ingin saya capai di sini adalah memiliki log dalam format salah satu /var/log/nginx/mydomain.com/access.logatau/var/log/nginx/mydomain.com.access.log

Sebaliknya, saya mendapatkan /var/log/nginx/$server_name.access.log.

Jika saya mencoba metode direktori saya mendapatkan kesalahan saat memeriksa konfigurasi nginx: [emerg] open() "/var/log/nginx/$server_name/access.log" failed (2: No such file or directory)

Mengapa nginx tidak meneruskan variabel ke nama file?

Menggunakan nginx / 1.0.0

Mahdi.Montgomery
sumber
Versi apa yang Anda jalankan? Variabel dalam nama file log hanya diperbolehkan sejak 0.7.4. wiki.nginx.org/HttpLogModule
Frank Farmer
3
dan bahkan kemudian, hanya di access_log. Variabel masih tidak diizinkan di error_log. $ server_name mungkin juga bukan variabel yang benar-benar Anda cari, karena itu akan selalu meluas ke '_' dalam kasus Anda. Anda mungkin benar-benar mencari $ host.
kolbyjack
Saya menggunakan 1.0.0, dan terima kasih untuk pointer di $ host - itulah yang saya coba capai. Juga, tidak tahu Kesalahan Server ada - pikiran hancur, terima kasih untuk migrasi.
Mahdi.Montgomery
1
Apakah ini tidak mungkin saat ini dalam versi terbaru?
snh_nl

Jawaban:

6

Anda perlu menggunakan $hostvariabel - hanya diizinkan untuk access_logarahan .

warren
sumber
2
Saya akan menganggap tidak ada solusi untuk melewatkan variabel untuk error_log .. Yang agak terlalu buruk.
Mahdi.Montgomery
2
tidak dapat menggunakan $hostvariabel dalam access_logneighter
superhero