web-dev-qa-db-ja.com

Drupal Varnishのインストール後にリバースプロキシにログインできない)

Drupal 7.xのVarnishを設定します。settings.phpに移動して次の行のコメントを外し、管理者としてログインしようとすると、同じページにリダイレクトされるだけです。何も起こりません。何が間違っていたのかわかりません。

$conf['reverse_proxy'] = TRUE;
2
George Katsanos

どうやらあなたのログイン/登録ページはVarnishによって提供され、あなたのvcl設定はSESS cookieを取り除きます(多くの例で見られます)。 vcl_recv関数で、vcl設定(Varnish 2.x)に追加する必要があるものは次のとおりです。

# Do not cache these paths.
if (req.url ~ "^/status\.php$" ||
    req.url ~ "^/update\.php$" ||
    req.url ~ "^/ooyala/ping$" ||
    req.url ~ "^/admin/build/features" ||
    req.url ~ "^/info/.*$" ||
    req.url ~ "^/flag/.*$" ||
    req.url ~ "^.*/ajax/.*$" ||
    req.url ~ "^.*/ahah/.*$" ||
    req.url ~ "^/user/.*$") {
    return (pass);
}     

これは常に「user /」関連ページをバックエンド(Apache/nginx /選択したWebサーバー)に渡し、Varnishはこのページのキャッシュバージョンを提供しません。

2
shumushin

詳細を教えてください。まず、これが私のsettings.phpにあるものです:

/**
 * Varnish settings
 */
$conf['cache_backends'][] = 'sites/all/modules/varnish/varnish.cache.inc';
$conf['cache_class_cache_page'] = 'VarnishCache';
$conf['reverse_proxy'] = true;
$conf['cache'] = 1;
$conf['cache_lifetime'] = 0;
$conf['page_cache_maximum_age'] = 21600;
$conf['reverse_proxy_header'] = 'HTTP_X_FORWARDED_FOR';
//$conf['page_cache_invoke_hooks'] = false;
$conf['reverse_proxy_addresses'] = array('127.0.0.1');
$conf['omit_vary_cookie'] = true;
$conf['page_cache_invoke_hooks'] = FALSE;

$ conf ['page_cache_invoke_hooks'] = FALSEのように、それらすべては必要ないかもしれませんが、私にとってはうまくいきます

まず、Varnishをポート80に、Apacheをポート8080に設定しましたか?まず http://example.com:808 でサイトにアクセスして、Apacheがまだページを提供しているかどうかを確認します。サーバーが動作しているかどうかを確認する別の方法は、sshを介してターミナルを開き、「netstat -anp | grep httpd '。これが私の出力です:

netstat -anp | grep httpd
tcp        0      0 0.0.0.0:8080                0.0.0.0:*                   LISTEN      324/httpd

netstat -anp | grep varnish
tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      24841/varnishd      
tcp        0      0 127.0.0.1:6082              0.0.0.0:*                   LISTEN      24840/varnishd      

Apache(httpd)が:8080で動作し、varnishd(デーモン(サービスなどの場合はd))が:80と:6082で実行されていることがわかります。

:8080のサイトを見ることができ、:80と:6082でワニスを実行している場合は、http://example.com:8080/admin/config/development/varnishを介してワニスdrupal構成ページに移動する必要があります

そこから、正しいVarnishバージョンセット、127.0.0.1:6082に設定されたVarnish Control Terminal、およびVarnish Control Keyセットを選択する必要があります。これはシークレットファイルの出力で確認できます。 CentOSでは、次の方法でこれを行うことができます。cat /etc/varnish/secret-これにより、30文字の長い文字列を入力できます。この設定ページの下部に、「ステータス:Varnish Running」が表示されます。

これらすべてが機能していてもサイトを表示できない場合は、ワニスとグルの瞑想に注目した出力が得られます。これは、ワニスが実際に実行されているが、正しく構成されていないことを示しています。おそらく.vclファイルにあります。グル瞑想がなく、サイトが機能していない場合は、sysconfigを正しく設定していない可能性があります。編集-もう一度CentOS-viまたはnanoを使用して/etc/sysconfig/varnish。次のコメントはありません。

// using Alternative 2, Configuration with VCL
DAEMON_OPTS="-a :80 \
             -T localhost:6082 \
             -f /etc/varnish/default.vcl \
             -S /etc/varnish/secret \
             -s file,/var/lib/varnish/varnish_storage.bin,1G \

.vclファイルが正しく参照されていること、およびポート(:6082)が上記のnetstatで見つけたものと同じであることを確認します。

最後に、Varnish Guru Meditationを取得している場合は、.vclが問題です。この場合、私が.vclに持っているものの一部を次に示します。

BEGINNING OF FILE ->
backend default {
  .Host = "127.0.0.1";
  .port = "8080";
  .connect_timeout = 600s;
  .first_byte_timeout = 600s;
  .between_bytes_timeout = 600s;
}

sub vcl_recv {
//TRY THIS AT BEGINNING ->
return(pass)
..
}

return(pass)はすべてを渡すため、ワニスは実際には何もキャッシュしませんが、診断に使用できます。ワニスに関連する変更を行った後、次の方法でワニスを再起動する必要があることを覚えておいてください。service varnish restart-.vclにエラーがある場合、再起動しません。

2
Steven H

ワニスはあなたのセッションクッキーを取り除くと思います。あなたはD7またはプレスフローを使用していると思います。 ワニスモジュール をインストールしましたか?

0
Mike