2017-04-06 9 views
0

私はワニス4、PHP-FPM 7、nginxの使用ESIのsrcタグ内のURLを読んでいないのCentOS 7ワニス4 ESI:bereq.urlは、

マイvarnish.params:

DAEMON_OPTS="-a :80 -T 127.0.0.1:6082 
      -f /etc/varnish/default.vcl 
      -S /etc/varnish/secret 
      -s malloc,1g 
      -p feature=+esi_disable_xml_check,+esi_ignore_other_elements 
      -p cli_buffer=16384 
      -p vcc_allow_inline_c=on" 

マイdefault.vcl:私はアクセスすることによってトリガーされるVCLコードは、それを言うことを使用する場合

if (bereq.url ~ "^.*(\/**esi**\/)+.*$") { 
    set beresp.do_esi = true; 
    set beresp.ttl = 0s; 
} else { 
    set beresp.ttl = 3600s; 
} 

私の問題は、次のとおりです。http://localhost/lab/varnish

どのレンダリング:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
<head> 
</head> 
<body> 
    <esi:include src="http://localhost/lab/esi/body"/> 
</body> 
</html> 

ニスはESIタグ内のURL srcを読んでいないので、それだけで空のボディをレンダリングています。

しかし、私はこのコードを使用する場合:

if (bereq.url ~ "^.*(\/**lab**\/)+.*$") { 
    set beresp.do_esi = true; 
    set beresp.ttl = 0s; 
} else { 
    set beresp.ttl = 3600s; 
} 

ニスが成功することにより製造されるESIタグ内のコンテンツをレンダリングする:ニスをトリガーにする方法 http://localhost/lab/esi/body

ESIフラグメントは、上ベースのレンダリングESIの "src"タグにあるものを認識していますか?

私はSurrogate-Capabilityを設定して、Surrogate-Controlでチェックしてみましたが、それはどちらも機能しません。私は手がかりを使い果たしている..

答えて

0

私はあなたができるとは思わない。

beresp.do_esiをtrueに設定すると、Varnishはバックエンドの応答を解析し、各esi:includeタグをそのソースコンテンツで置き換えます。

ワニスを使わないと、berespを解析せずにそのままクライアントに提供します。

ところで、なぜesiタグを部分的に置き換えたいのですか?

+0

私は、クライアントに配信するためにすでにキャッシュされたコンテンツを使用し、ESIタグ内のソースからのコンテンツのみをバックエンドに除外します。 –