Согласно моему собственному личному опыту (и mod_log страница), можно объявить это в глобальном масштабе (т.е. конфигурация сервера). Таким образом за пределами Вашего VirtualHost, можно использовать:
CustomLog logs/host1-access-log combined env=!image
CustomLog logs/image-access-log combined env=image
Это будет затем относиться ко всему VirtualHosts, если они конкретно не переопределят его.Надеюсь, это поможет!
Править: Я смог успешно выполнить это использование следующей конфигурации (слушающий на портах 81 и 82 для тестирования):
Listen 81
Listen 82
SetEnvIf Request_URI "\.gif$" image
CustomLog logs/image-access-log combined env=image
ServerName test81
DocumentRoot /home/apache/test81
CustomLog logs/host1-access-log combined env=!image
ServerName test82
DocumentRoot /home/apache/test82
CustomLog logs/host1-access-log combined env=!image
Вывод от файлов журнала следующим образом (заметьте двойной вывод к access_log
и host1-access-log
)
==> /var/log/httpd/image-access-log <==
10.1.2.239 - - [12/Sep/2010:13:23:34 -0400] "GET /image_on_81.gif HTTP/1.1" 304 - "-" "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.9) Gecko/20100824 Firefox/3.6.9"
10.1.2.239 - - [12/Sep/2010:13:23:42 -0400] "GET /image_on_81.gif HTTP/1.1" 404 213 "-" "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.9) Gecko/20100824 Firefox/3.6.9"
10.1.2.239 - - [12/Sep/2010:13:23:48 -0400] "GET /image_on_82.gif HTTP/1.1" 304 - "-" "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.9) Gecko/20100824 Firefox/3.6.9"
==> /var/log/httpd/host1-access-log <==
10.1.2.239 - - [12/Sep/2010:13:23:57 -0400] "GET /not_an_image.txt HTTP/1.1" 200 12 "-" "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.9) Gecko/20100824 Firefox/3.6.9"
==> /var/log/httpd/access_log <==
10.1.2.239 - - [12/Sep/2010:13:23:57 -0400] "GET /not_an_image.txt HTTP/1.1" 200 12 "-" "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.9) Gecko/20100824 Firefox/3.6.9"
Если Вы все еще не можете достигнуть желаемого эффекта, может случиться так, что могут быть другие проблемные области в Вашей конфигурации Apache; если Вы отправляете это также, я уверен, что (или кто-то еще) могу помочь далее.:)
Похоже, я был слишком нетерпелив и недостаточно исследовал, прежде чем опубликовать здесь. Поскольку Паунд поддерживает SSL SNI (для SSLv3), я могу просто использовать несколько операторов «Cert», чтобы указать несколько файлов сертификатов, и Паунд выберет подходящий для входящего запроса.
[Если запрос поступает в Pound через SSL для домена, который я не размещаю и, следовательно, не имею сертификата для него, Pound (по крайней мере, для меня) просто использует первый сертификат в списке, который вызывает браузер чтобы показать ошибку SSL].
SNI поддерживается большинством современных браузеров. Я не думаю, что в последнем квартале 2012 года было слишком много пользователей IE 5 и 6 , например, подоконник;)
Это пример базовой конфигурации, которая работает для меня;
ListenHTTPS
Address my.public.facing.ip
Port 443
Cert "/etc/ssl/certs/www.sslsite1.com.pem"
Cert "/etc/ssl/certs/www.sslsite2.com.pem"
Service
BackEnd
Address 192.168.0.10 # A web server IP
Port 80
End
End
End
У меня есть Pound, который обслуживает несколько разных веб-сайтов SSL, просто используйте отдельные ListenHTTPS для разных сайтов, вот и все.