Question Variables dans le nom du journal - nginx


J'ai la configuration de serveur par défaut suivante dans 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;
  }
}

J'ai plusieurs domaines pointant vers le serveur. Ce que j'essaie d'accomplir ici est d'avoir des journaux au format /var/log/nginx/mydomain.com/access.log ou /var/log/nginx/mydomain.com.access.log

Au lieu de cela, je reçois /var/log/nginx/$server_name.access.log.

Si j'essaie la méthode directory, j'obtiens une erreur lors de la vérification de la configuration nginx: [emerg] open() "/var/log/nginx/$server_name/access.log" failed (2: No such file or directory)

Pourquoi nginx ne transmet-il pas la variable au nom de fichier?

Utiliser nginx / 1.0.0


10
2018-06-21 23:00


origine


Quelle version utilisez-vous? Les variables dans les noms de fichier journal ne sont autorisées que depuis la version 0.7.4. wiki.nginx.org/HttpLogModule - Frank Farmer
et même alors, seulement dans access_log. Les variables ne sont toujours pas autorisées dans error_log. $ nom_serveur n’est probablement pas non plus la variable que vous recherchez réellement, car elle sera toujours étendue à «_» dans votre cas. Vous recherchiez probablement vraiment $ host. - kolbyjack
J'utilise 1.0.0, et merci pour le pointeur sur $ host - c'est ce que j'essayais d'accomplir. En outre, je ne savais pas que Server Fault existait - ahuri, merci pour la migration. - Mahdi.Montgomery


Réponses:


Vous devez utiliser le $host variable - seulement autorisé pour access_log les directives.


6
2018-06-22 20:09



Je suppose qu'il n'y a pas de solution de contournement pour transmettre une variable pour error_log .. Ce qui est un peu dommage. - Mahdi.Montgomery
ne peut pas utiliser $host variable dans le access_log neighter - superhero