Назад | Перейти на главную страницу

Подстановочные знаки в виртуальных хостах с динамическими журналами?

Конфигурация My Apache Virtual Hosts в настоящее время имеет несколько повторов этого;

<VirtualHost *:80>
    ServerName example1.com
    ServerAlias www.example1.com

    DocumentRoot /home/example1.com/www

    LogLevel warn
    ErrorLog /home/example1.com/logs/error.log
    CustomLog /home/example1.com/logs/access.log combined

    Alias /dev /home/example1.com/dev
    ScriptAlias /cgi-bin/ /home/example1.com/cgi-bin
</VirtualHost>

Как можно изменить это так, чтобы все экземпляры example1.com были заменены тем доменом, который пользователь просматривает в данный момент?

я знаю mod_vhost_alias, но я не вижу никаких упоминаний о том, что он также может динамически создавать журналы или псевдонимы (кроме ScriptAlias). Есть ли способ добиться этого? Я бы предпочел не жертвовать для этого отдельными журналами.

Вероятно, вы могли бы решить псевдоним с помощью правила mod_rewrite:

# get the server name from the Host: header
UseCanonicalName Off

# remove www.
RewriteCond %{HTTP_HOST} ^www\.(.*)$ 
RewriteRule .? - [E=noWWWHost:%1]

# map /dev  to the documentroot for dev
RewriteCond %{REQUEST_URI} !^/~
RewriteCond %{HTTP_HOST} ^www\. 
RewriteRule ^/dev/(.*)$ /home/${lowercase:%{ENV:noWWWHost}}/dev/$1


# not using www
RewriteCond %{REQUEST_URI} !^/~
RewriteCond %{HTTP_HOST} !^www\. 
RewriteRule ^/dev/(.*)$ /home/${lowercase:%{HTTP_HOST}}/dev/$1


# make a log that is "splitable" on host
LogFormat "%{Host}i %h %l %u %t \"%r\" %s %b" vcommon
CustomLog logs/access_log vcommon

Изменить: забыл добавить, что приведенная выше конфигурация не проверена :)

Ты можешь использовать mod_vhost_alias и измените формат журнала, добавив %V (Действующее имя сервера) в начале строки.

Затем вам просто нужно написать простой сценарий оболочки или программу на Perl, которая проанализирует необработанный журнал и запишет его в соответствующий файл журнала. Вы даже можете сделать это в реальном времени с помощью конвейерного журнала: CustomLog "|/path/to/script.pl" combined_vhost

Есть несколько способов сделать это ... вы можете создать виртуальный хост со связанным файлом журнала для каждого хоста. Если вы ищете совпадение с подстановочными знаками, возможно, будет проще проанализировать журналы позже с заданным именем хоста.