我必须在服务器配置文件中定义大约 100 个子域虚拟主机条目。我想知道是否有任何方法可以使用正则表达式来增加 apache 配置文件中的代码?
答案1
你应该看看这个如何从 Apache 文档中,我认为这就是您所需要的:
http://httpd.apache.org/docs/2.2/vhosts/mass.html
基本思想是将所有静态配置替换为动态配置机制。这有许多优点:
您的配置文件更小,因此 Apache 启动更快并且占用更少的内存。
添加虚拟主机只需在文件系统中创建适当的目录和在 DNS 中创建条目即可 - 您无需重新配置或重新启动 Apache。
更新:
使用大量虚拟主机禁止使用不同的日志文件:
主要缺点是不能为每个虚拟主机设置不同的日志文件;但是,如果您有很多虚拟主机,那么这样做无论如何都是可疑的,因为它会占用文件描述符。最好将日志记录到管道或 fifo 中,并安排另一端的进程将日志分发给客户(它还可以积累统计数据等)。
然而这并不是真正的问题,因为您可以使用 CustomLog 的 %v 过滤器,该过滤器将 ServerName 放在每个记录的请求前面,然后您可以根据此过滤和拆分日志(如果需要)。
一个好的做法是将这些日志放入 mysql 数据库中(动态或通过 cronjob、管道或 fifo 文件),因为 SQL 是一种很好的工具,可以从中提取有意义的信息。
请查看这篇文章,其中介绍了如何通过 mod_log_mysql 设置(直接)数据库日志记录:
http://onlamp.com/pub/a/apache/2005/02/10/database_logs.html
将日志直接存储在数据库mysql中是一个很好的解决方案,通过ARCHIVE 存储引擎但它有自己的局限性(写入时锁定表)。另一种方法是在更标准的存储引擎(例如 innodb、xtradb)上构建系统,如果您已经有一个 mysql 服务器,我会先尝试这种方法,然后再尝试其他解决方案,因为它不需要太多学习。
如果你觉得更冒险一点,你可以看看MongoDB,作为面向文档的数据库,它特别适合作为日志存储系统(快速、强大的过滤功能、插入/读取速度),但一定要有一个良好的专用服务器,因为您需要 RAM 才能使其正常运行。
您可以在此处找到有关 MongoDB 日志的详细信息:
- 从 MongoDB 团队的角度来看好处的简短文章: http://blog.mongodb.org/post/172254834/mongodb-is-fantastic-for-logging
- 一个非常有趣的幻灯片,介绍了将日志直接写入 mongodb 的不同解决方案(java、python、ruby 和 php、zend 框架、C# .NET 工具可用):
http://www.slideshare.net/WombatNation/logging-app-behavior-to-mongo-db - MongoDB 网站上的系统管理员 wiki:
http://www.mongodb.org/display/DOCS/Admin+Zone
答案2
不,但是你想做什么?在行中使用正则表达式<VirtualHost>
毫无意义。
ServerAlias
可以使用通配符,但不能使用正则表达式;这可能会给你你需要的东西?