2015-10-28 10 views
10

が現在のURIとして含めるように振る舞うが、$ DOCUMENT_URIはとqueerly

テンプレートの一部を働いSSI-含ま:

正確
<div class="panel"> 
    <div class="ym-wrapper"> 
     <div class="ym-wbox"> 
     <!--# set var="panel" 
      value="<!--# include virtual='/panel/?project=project_name&color=dark&caller=$http_referer' -->" --> 
     <!--# echo var="panel" encoding="none" --> 
     </div> 
    </div> 
    </div> 

$http_referer、ない$document_uri

nginxのログ形式:

log_format subtimed '$remote_addr - $remote_user [$time_local] ' 
         '"INC $uri$is_args$args" $status $bytes_sent "$http_referer" ' 
         '"$http_user_agent" 
/パネル/ため

nginxの場所:

location /panel/ { 
      internal; 
      ssi on; 
      proxy_set_header  Host panel.domain.zone; 
      proxy_method   GET; 
      proxy_pass    http://panel.domain.zone/; 
      proxy_set_header  X-Real-IP  $remote_addr; 
      proxy_connect_timeout 1s; 
      proxy_send_timeout  2s; 
      proxy_read_timeout  2s; 
      proxy_intercept_errors on; 
      log_subrequest on; 
    } 

私はページhttp://devel.domain.zoneを開いて、私はnginxのログに参照してください。

xxx.xxx.xxx.xxx - - [15/Oct/2015:18:29:31 +0300] "INC /panel/?project=project_name&color=dark&caller=http://devel.domain.zone" 200 0 "http://devel.domain.zone/" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:41.0) Gecko/20100101 Firefox/41.0" 

[OK]を、ページにhttp://devel.domain.zone/sec/?theme=102 nginxのログを行く:

xxx.xxx.xxx.xxx - - [15/Oct/2015:18:30:29 +0300] "INC /panel/?project=project_name&color=dark&caller=http://devel.domain.zone/sec/?theme=102" 200 0 "http://devel.domain.zone/sec/?theme=102" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:41.0) Gecko/20100101 Firefox/41.0" 

$http_refererの動作は、$document_uri ... のようになります私はSSIではなく$http_referer$document_uriを設定するのであれば、私はnginxのログにこのような何かを参照、次のとおりです。?

xxx.xxx.xxx.xxx - - [15/Oct/2015:18:30:29 +0300] "INC /panel/?project=project_name&color=dark&caller=/ga/ga.js" 200 0 "http://devel.domain.zone/sec/?theme=102" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:41.0) Gecko/20100101 Firefox/41.0" 

WTFを!どの時点で変数$document_uriが計算されますか?どのように変数を変数に渡すか:名前として、または値として?

+0

あなたが何を求めているのか分かりません!あなたは何をしましたか、何を期待しましたか、代わりに何を得ましたか? – cnst

+0

ping。私の答えが何か不足しているかどうかを明確にすることはできますか?そうでなければ、私はそれが受け入れられるか、約束された賞金が授与されることを感謝します。 :-) – cnst

答えて

0

あなたが求めていることは完全にはっきりしていません。あなたは何をした? あなたは何を期待しましたか?代わりに何を得ましたか?

http://nginx.org/r/%24document_uriによれば、$document_uriだけ$uriと同じである(そしてどちらもが完全に異なる変数である$request_uri、と混同してはなりません)。

は、順番に、それは本質的nginxの location/ rewriteステートマシン  —あなたが行うすべての内部 rewriteの変化の様子だ、また私自身の言葉ではかなり明確に(オーバー http://nginx.org/r/%24uriで)文書化— $uri変数でありますこの変数は、基本的には常に書き直されています。もう一つの重要なポイントは、あなたは多分、この変数を自分で変更しない限り、それはまたそれから $is_args$args一部を欠けている、ということであり、それは、 が実際に$uriに対して正確に行わで一致 locationことから、 locationマッチングであるのと同様に、また 正規化です。

ところで、あなたはrewriteディレクティブの束と$uriで行うことができますいくつかの興味深いもののため、http://mdoc.su/を見て(そのnginx.confを見てみてください!)と単純にそれにもかかわらず、注目に値すると便利なコードサンプルを取りますまた、on ServerFault: "How do I verify site ownership on Google Webmaster Tools through nginx.conf?"も利用可能です。

あなたはこれらの事をCで実装されている方法の詳細興味があれば、あなたがであなたの旅を開始することができます

FYI
+0

@TobySpeightは、答えの実際の*コンテンツ*に基づいたあなたのダウンボートです。それ以上のことは、「あなたが求めていることは完全にはっきりしていません。私の答えが十分ではない場合でも、質問自体は投票されたものと同じくらい良いです、誰にも何か手がかりがありません。特に賞金の後で?この回答の-2票は、まったくばかげていないと評価されています! – cnst

+0

私はdownvoteしませんでした。私はこれをレビューするように与えられました。最初の段落は、それが明確化を求めているように見えます。もっと徹底的に読むと、今度は間違っているように見えて、コメントを撤回してアップヴォートを与えます。あなたのURLを見てください - あなたはいくつかの場所で '$ 24'を '%24 'としてエンコードする必要があると思います。 –

関連する問題