Как настроить виртуальный хост без файлов cookie в Apache2?
Мы запускаем более ста веб-приложений (ежедневно растущих) в стеке LAMP, используя Apache2 в Ubuntu 10.04.
Мы бы хотели, чтобы все запросы к статическому контенту были без файлов cookie.
Мы размещаем приложения в разных доменах, большинство из которых в виде приложений SaSS. Многие из доменов размещают экземпляры приложений на поддоменах, т.е. myapp.example.com, myapp2.example.com myapp.otherexample.com и т. д.
На данный момент весь статический контент является сервером относительно (суб) домена, запрашивающего его.
Насколько я понимаю процесс, мне нужно будет настроить новый домен, например. staticexample.com.
В этом случае требуется ли специальная настройка виртуального хоста для этого домена, чтобы гарантировать, что файлы cookie не обслуживаются?
Кроме того, можно ли вместо этого использовать static.example.com?
В этом случае, какие конфигурации мне понадобятся на моем виртуальном хосте для этого субдомена, чтобы гарантировать, что куки не обслуживаются?
2 ответа
Когда вы настраиваете другой домен (не поддомен) для обслуживания статического контента, он будет без файлов cookie. Файлы cookie устанавливаются приложением, а не веб-сервером.
Пример. Yahoo использует yimg.com для показа статического контента. Когда страница на yahoo.com ссылается на объект на yimg.com, файл cookie yahoo.com не отправляется вместе с запросом, отправленным на домен yimg.com, поскольку файлы cookie одного домена не могут быть доступны другому.
Я бы посоветовал вам использовать static-example.com для показа статического контента вместо static.example.com. Для этого вам не нужно делать ничего особенного в веб-сервере для файлов cookie. Настройте статический домен как обычный домен и начните его использовать.
Во-первых, легкая часть: DNS. Все, что вам нужно сделать, - это создать дополнительные записи, которые указывают на сервер, независимо от того, создаете ли вы их как записи CNAME существующего имени хоста или записи A, указывающие непосредственно на IP-адрес, решать только вам.
Во-вторых, средняя часть: Apache. Вы не объясняете, что у вас на хостинге или у вас уже есть виртуальные хосты. Самое простое решение - полностью отключить виртуальный хостинг (никаких команд VirtualHost или NameVirtualHost в вашей конфигурации вообще, только DocumentRoot глобального уровня), который заставит apache обслуживать один и тот же сайт независимо от того, как подключился клиент. В противном случае, если вы хотите использовать разные DocumentRoot
s для разных имен хостов, вам нужно установить NameVirtualHost
что-то вроде *:80
, а затем создать <VirtualHost *:80>
(должен соответствовать настройке NameVirtualHost) записи, такие как
<VirtualHost *:80>
ServerName www.example.com
DocumentRoot /var/www/example.com
</VirtualHost>
<VirtualHost *:80>
ServerName static.example.com
DoumentRoot /var/www/static
</VirtualHost>
Наконец, самое сложное: сделать его "без печенья". Файлы cookie на уровне домена отправляются на каждый сайт в этом домене, поэтому вы должны либо купить совершенно отдельный домен (скажем, staticexample.com), либо заставить всех использовать "www.example.com" и выдавать файлы cookie, действительные только на "www"..example.com "в вашем приложении. Принудительная часть может быть сделана с
<VirtualHost *:80>
ServerName example.com
RedirectPermanent / http://www.example.com/
</VirtualHost>
Исправление куки в вашем приложении зависит от вас. Например, смотрите поле $domain в функции setcookie () PHP.
Если вы идете с отдельным доменом, то вместо перенаправления выше, вы можете добавить ServerAlias example.com
линия на www.example.com VirtualHost.