로그 이름의 변수-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
Frank Farmer

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.