web-dev-qa-db-ja.com

Apache2でCookieなしの仮想ホストを構成する方法は?

Ubuntu 10.04でApache2を使用して、LAMPスタック上で100を超えるWebアプリケーション(毎日成長)を実行しています。

静的コンテンツへのすべてのリクエストはCookieなしである必要があります。

私たちは多くの異なるドメインでアプリケーションをホストしており、その大部分はSaSSアプリケーションです。ドメインの多くは、サブドメイン上のアプリケーションのインスタンスをホストします。 myapp.example.com、myapp2.example.commyapp.otherexample.comなど。

現時点では、すべての静的コンテンツは、それを要求している(サブ)ドメインに関連するサーバーです。

プロセスを理解している限り、新しいドメインを設定する必要があります。 staticexample.com。

この場合このドメインの仮想ホストでの特別な構成は、Cookieが提供されないようにするために必要ですか?

また、代わりにstatic.example.comを使用することは可能でしょうか?

この場合 Cookieが提供されないようにするには、このサブドメインの仮想ホストでどのような構成が必要ですか?

1
xzyfer

静的コンテンツを提供するために別のドメイン(サブドメインではない)を設定すると、Cookieは使用されなくなります。 Cookieは、Webサーバーではなく、アプリケーションによって設定されます。

例。 yahooはyimg.comを使用して静的コンテンツを提供します。 yahoo.comのページがyimg.comのオブジェクトを参照している場合、あるドメインのCookieに別のドメインがアクセスできないため、yahoo.comのCookieはyimg.comドメインに送信されたリクエストとともに送信されません。

Static.example.comの代わりにstatic-example.comを使用して静的コンテンツを提供することをお勧めします。このため、Cookie用にWebサーバーで特別なことをする必要はありません。通常のドメインと同じように静的ドメインを構成し、使用を開始します。

3
Sameer

まず、簡単な部分:DNS。既存のホスト名のCNAMEレコードとして作成するか、IPアドレスを直接指すAレコードを作成するかに関係なく、サーバーを指す追加のレコードを作成するだけです。

第二に、中程度の部分:Apache。何をホストしているのか、または仮想ホストがすでにあるかどうかについては説明しません。最も簡単な解決策は、仮想ホスティングを完全にオフにすることです(構成にVirtualHostまたはNameVirtualHostコマンドはまったくなく、グローバルレベルのDocumentRootのみ)。これにより、クライアントの接続方法に関係なく、Apacheがまったく同じサイトにサービスを提供します。それ以外の場合、ホスト名ごとに異なるDocumentRootsを使用する場合は、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」を使用させ、「www」でのみ有効なCookieを発行する必要があります。アプリケーションの.example.com」。強制部分はで行うことができます

<VirtualHost *:80>
   ServerName example.com
   RedirectPermanent / http://www.example.com/
</VirtualHost>

アプリケーションのCookieを修正するのはあなた次第です。たとえば、PHPの setcookie() 関数の$ domainフィールドを参照してください。

別のドメインを使用する場合は、上記のリダイレクトの代わりに、www.example.comVirtualHostにServerAlias example.com行を追加できます。

0
DerfK