在虚拟主机定义中使用正则表达式

在虚拟主机定义中使用正则表达式

我必须在服务器配置文件中定义大约 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 日志的详细信息:

答案2

不,但是你想做什么?在行中使用正则表达式<VirtualHost>毫无意义。

ServerAlias可以使用通配符,但不能使用正则表达式;这可能会给你你需要的东西?

相关内容