web-dev-qa-db-ja.com

Stunnel + Varnish + Apacheの質問

私は現在、すべてのhttpトラフィックに対してApacheの前でVarnishを実行しています。 HTTPS接続のキャッシュも利用できるようにstunnelを追加しました。したがって、HTTPSの場合、stunnelはワニスと通信し、次にワニスはApacheと通信します。

問題は、varnishがキャッシュされたページをstunnelに返すと、stunnelはそれをHTTPS経由でクライアントに送信しますが、cssファイル、jsファイルなどの残りのリソースは、プレーンHTTPを介してクライアントから要求されることです。これは、HTTPだけのリソースへのリンクを含むキャッシュされたページが原因だと思います。

私の質問は次のとおりです。

  1. これはリバースSSLプロキシの一般的な問題ですか?

  2. このフォームの発生を防ぐ方法はありますか?

  3. ドメインwww.example.comがあり、HTTPS経由でのみアクセスできるようにしたい場合、また http://www.example.com 404を返さずに https://www.example.com にリダイレクトします。ループを回避してこれを行うにはどうすればよいですか(つまり、ニスがstunnelにリダイレクトし、HTTPを介してニスからページを再度要求し、次に再びstunnelなどにリダイレクトします)。ヘッダーが存在する場合にリダイレクトを実行しないように、ワニスが検索するヘッダーをstunnelが挿入する方法はありますか?

2

一部のWebサイトでは、HTTPバージョンからHTTPSバージョンに切り替える場合は、「ねえ、HTTPS経由で提供されています」のようにWebサイトの構成を通知する必要があります。その理由は、一部のWebサイトで静的ファイルURLジェネレーターの構成がハードコードされているためです。したがって、HTTPSを介して提供されている場合でも、static-resources-URLジェネレーターはHTTPを介して通信していると見なします。

ここで、ニスキャッシュがまだ古いコンテンツを配信していると思われます。推測は本当かもしれません...まあ、あなたは確認できるようにキャッシュをクリアすることができます理論

パーツをリダイレクトするには、リダイレクトタスクを実行するようにワニスを構成できます。この行をsub vcl_recv内のニス設定に追加します

if (!req.http.X-Forward-For && client.ip !~ localhost) {
    set req.http.x-Redir-Url = "https://" + req.http.Host + req.url;
    error 750 req.http.x-Redir-Url;
}

ロジック:ランダムなIP(ローカルホスト以外)がワニスに接続する場合(まだHTTPバージョンを使用しているため)、ワニスはHTTPSにリダイレクトします。 このブログ から取得したVCLロジック。

概要

  1. 静的ファイルのURL部分を解決するには、(1)Webサイトの構成を確認し、HTTPS経由で提供されていることを通知し、(2)ワニスのキャッシュをクリアする必要があります。

  2. HTTPからHTTPSタスクへのリダイレクトはニスで行うことができます

1
masegaloeh