ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

Nginx-动态虚拟主机的error_log

2019-10-25 04:09:53  阅读:243  来源: 互联网

标签:vhosts nginx error-log


如何获得动态虚拟主机的错误日志文件?

server {
    listen 80;

    server_name ~^(?<folder>[^.]*).(?<user>[^.]*).dev.example.com;

    root /var/www/projects/dev/$user/$folder/htdocs;
    access_log /var/www/projects/dev/$user/$folder/access.log;
    error_log  /var/www/projects/dev/$user/$folder/error.log;
}

root和access_log正常工作,但是如果我添加error_log行,则nginx无法启动,因为/ var / www / projects / dev / $user / $folder /不存在.

解决方法:

根本不支持此功能-您可以在http://nginx.org/r/access_log内使用变量,但不能在http://nginx.org/r/error_log内使用变量.

附言请注意,通常,在access_log或error_log中使用用户输入变量是一个非常糟糕的主意,因为您通过在Host标头中使用随机字符串进行请求,引入了恶意用户耗尽inodes on your filesystem的可能性,这可能会导致为每个新请求创建一个新文件.有人试图枚举服务器上所有可能的用户,甚至可能无意间(没有恶意).您的特定代码不一定受此困扰,因为通常不会由任何UNIX软件自动创建目录,但是它仍然不是最佳的处理方式.

按照nginx的原则,最好为每个用户生成一个单独的http://nginx.org/r/server配置(因为nginx可以重新启动而不会造成任何停机).考虑到它还有其他好处,因为nginx严重依赖数学上有效的数据结构来查找正确的服务器(不是基于regexp的服务器配置).在access_log中不使用变量也将确保可以缓冲对access_log的写入,这可以大大提高服务器的有效吞吐量(尤其是如果您登录非SSD HDD时).

基本上,nginx中已经有很多创可贴来支持access_log中的变量(只要查看变量用于指定文件时在http://nginx.org/r/access_log处的限制列表),而且我想引入更多此类创可贴被认为是不合适的.也为error_log创可贴(特别是考虑到生产环境中的error_log不应与access_log差不多大,因此,如有必要,您可以轻松编写外部工具来将其拆分).

标签:vhosts,nginx,error-log
来源: https://codeday.me/bug/20191025/1925544.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有