Используйте регулярное выражение в определении virtualhost
Я должен определить около 100 записей виртуального хоста поддоменов в файле конфигурации сервера. Я хочу знать, есть ли способ сделать это с помощью регулярного выражения для увеличения кодов в конфигурационном файле apache?
2 ответа
Вы должны взглянуть на это, как из документации Apache, я думаю, это то, что вам нужно здесь:
http://httpd.apache.org/docs/2.2/vhosts/mass.html
Основная идея состоит в том, чтобы заменить всю статическую конфигурацию механизмом, который динамически ее обрабатывает. Это имеет ряд преимуществ:
Ваш файл конфигурации меньше, поэтому Apache запускается быстрее и использует меньше памяти.
Добавление виртуальных хостов - это просто вопрос создания соответствующих каталогов в файловой системе и записей в DNS - вам не нужно перенастраивать или перезапускать Apache.
Обновить:
Использование массового виртуального хостинга запрещает использование разных файлов журналов:
Основным недостатком является то, что вы не можете иметь разные файлы журнала для каждого виртуального хоста; однако, если у вас очень много виртуальных хостов, то делать это в любом случае сомнительно, потому что это ест файловые дескрипторы. Лучше войти в трубу или fifo и договориться о том, чтобы процесс на другом конце распространял журналы среди клиентов (он также может накапливать статистику и т. Д.).
Однако на самом деле это не проблема, потому что вы можете использовать фильтр% v для CustomLog, который помещает ServerName перед каждым зарегистрированным запросом, затем вы можете фильтровать и разбивать журналы, если это необходимо, основываясь на этом.
Хорошей практикой является размещение этих журналов в базе данных mysql (на лету или через файл cronjob, pipe или fifo), потому что SQL является отличным инструментом для извлечения из них значимой информации.
Взгляните на эту статью, в которой описывается настройка (прямой) регистрации в базе данных через mod_log_mysql:
http://onlamp.com/pub/a/apache/2005/02/10/database_logs.html
Хранение ваших журналов непосредственно в базе данных mysql может быть хорошим решением через механизм хранения ARCHIVE, но у него есть свои ограничения (таблица блокировки на запись). Альтернативой может быть сборка вашей системы на более стандартном механизме хранения (innodb, например, xtradb), если у вас уже есть сервер mysql, я бы попробовал это раньше других решений, поскольку он не требует большого изучения.
Если вы чувствуете себя немного более предприимчивым, вы можете взглянуть на MongoDB, поскольку база данных, ориентированная на документы, особенно подходит в качестве системы хранения журналов (быстрые, мощные возможности фильтрации, скорость вставки / чтения), но убедитесь, что у вас есть хороший выделенный ресурс. сервер для него, так как вам нужно оперативной памяти для его адекватного поведения.
Вы найдете подробности о регистрации в MongoDB здесь:
- Небольшая статья о преимуществах с точки зрения команды MongoDB: http://blog.mongodb.org/post/172254834/mongodb-is-fantastic-for-logging
- Очень интересное слайд-шоу по различным решениям для записи логов непосредственно в mongodb (java, python, ruby и php, Zend Framework, доступны инструменты C# .NET):
http://www.slideshare.net/WombatNation/logging-app-behavior-to-mongo-db - Вики-сисадмин на сайте MongoDB:
http://www.mongodb.org/display/DOCS/Admin+Zone
Нет, но что ты пытаешься сделать? Имея регулярное выражение в <VirtualHost>
линия не имеет смысла.
ServerAlias
может иметь подстановочные знаки, а не регулярное выражение; это может дать вам то, что вам нужно?