我们在Ubuntu 10.04上使用Apache2在LAMP栈上运行了超过一百个Web应用程序(每天增长)。
我们希望所有对静态内容的请求都是无Cookie的。
我们在许多不同的域中托pipe应用程序,其中大部分为SaSS应用程序。 许多域都托pipe子域上应用程序的实例,即。 myapp.example.com,myapp2.example.com myapp.otherexample.com等。
目前所有的静态内容都是服务器相对于请求它的(子)域。
据我了解的过程中,我需要build立一个新的领域,例如。 staticexample.com。
在这种情况下 ,在这个域的虚拟主机中是否需要特殊configuration才能确保不提供cookie?
另外,是否有可能改为使用static.example.com?
在这种情况下 ,我需要在我的虚拟主机中为这个子域configuration什么样的configuration,以确保没有cookie被提供?
当你设置一个不同的域名(而不是子域名)来提供静态内容时,它将没有cookies。 Cookie由应用程序设置,而不是Web服务器。
例。 雅虎使用yimg.com来提供静态内容。 当yahoo.com上的页面引用yimg.com上的对象时,yahoo.com的cookie不会与发送到yimg.com域的请求一起发送,因为一个域的cookie不能被另一个域访问。
我build议您使用static-example.com来提供静态内容,而不是static.example.com。 为此,您不需要在cookies的networking服务器上做任何特殊的事情。 像正常域一样configuration静态域,并开始使用它。
首先,简单的部分:DNS。 您只需创build指向服务器的额外logging,无论是将其创build为现有主机名的CNAMElogging,还是直接指向IP地址的logging取决于您。
其次,中等部分:Apache。 你不解释你正在托pipe什么,或者你是否已经有虚拟主机。 最简单的解决scheme是完全closures虚拟主机(在您的configuration中根本没有VirtualHost或NameVirtualHost命令,只有全局级别的DocumentRoot),这将使apache服务于完全相同的站点,而不pipe客户端如何连接。 否则,如果您想为不同的主机名使用不同的DocumentRoot
,您需要将NameVirtualHost
设置为*:80
,然后创build<VirtualHost *:80>
(必须匹配NameVirtualHost的设置)logging
<VirtualHost *:80> ServerName www.example.com DocumentRoot /var/www/example.com </VirtualHost> <VirtualHost *:80> ServerName static.example.com DoumentRoot /var/www/static </VirtualHost>
最后,困难的部分:使其“无cookie”。 域名级别的Cookie发送到该域名中的每个站点,因此您必须购买一个完全独立的域名(例如staticexample.com),否则强制每个人都使用“www.example.com”并发出仅在“www .example.com“在您的应用程序。 强制部分可以完成
<VirtualHost *:80> ServerName example.com RedirectPermanent / http://www.example.com/ </VirtualHost>
修复你的应用程序中的cookies取决于你。 例如,请参阅PHP的setcookie()函数的$ domain字段。
如果您使用单独的域名,则可以将一个ServerAlias example.com
行添加到www.example.com VirtualHost,而不是上面的redirect。