Мы столкнулись с подобными проблемами прежде, и это обычно происходит из-за шлюзов прикладного уровня на брандмауэре или устройствах IPSec. Эти ALGs помогают трафику (как SIP или FTP), что динамические порты использования в соединении через устройства NAT, и они могут также проверить, что трафик соответствует спецификациям протокола.
По моему опыту, если Вы не делаете NAT по VPN (и похоже, что Вы не), пытаются отключить ALG's на Вашем firewall/IPSec устройстве.
Вы могли, вероятно, решить псевдоним с правилом 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
(Эффективное имя сервера) в начале строки.
Затем просто необходимо записать простой сценарий оболочки или программу жемчуга, которая проанализирует необработанный журнал и запишет это в соответствующий файл журнала. Можно даже сделать это в режиме реального времени использование переданного по каналу журнала: CustomLog "|/path/to/script.pl" combined_vhost