Nginx:我可以在指定访问日志位置时使用 $server_name 吗?
Posted
技术标签:
【中文标题】Nginx:我可以在指定访问日志位置时使用 $server_name 吗?【英文标题】:Nginx: can I use $server_name when specifying access log location? 【发布时间】:2013-05-22 07:02:47 【问题描述】:我想为 nginx 虚拟主机编写一个配置文件,如下所示:
server
listen 80;
server_name www.my-domain-name.com;
access_log /home/me/sites/$server_name/logs/access.log;
error_log /home/me/sites/$server_name/logs/error.log;
location /static
alias /home/me/sites/$server_name/static;
location /
proxy_pass http://localhost:8000;
使用$server_name
似乎对location /static
有效,但对access_log
和error_log
似乎不起作用——我做错了什么吗?或者这是不可能的?我可以用其他方式吗?
[update] - 这是尝试重新加载 nginx 时的错误消息:
nginx: [emerg] open() "/home/me/sites/$server_name/logs/error.log" failed (2: No such file or directory)
【问题讨论】:
Outlook not good. 需要使用$host变量#serverfault.com/a/283182 这里也不能使用宿主变量。 【参考方案1】:我也想这样做,但显然 nginx 无法在 error_log
命令中扩展变量,以防出现错误并且无法获取日志文件名来写入它们。
他们的建议是使用一些程序来生成您的配置文件。您可以为此使用sed
,自动搜索和替换您自己的变量并将输出放置在 nginx 配置目录中。
【讨论】:
正确。最后我只是想我会使用sed
在多个地方替换主机名,不要介意重复......以上是关于Nginx:我可以在指定访问日志位置时使用 $server_name 吗?的主要内容,如果未能解决你的问题,请参考以下文章