2

VCLファイルにインラインCを書き込んでいます。具体的には、MaxmindのGeoIPデータベースを使用して、訪問者のIPをジオコーディングしています。私はすべてをインストールし、GeoIPデータベースのすべてのwikiの例に従い、すべてが順調に機能しています。

私は今、帰国国の例に加えて、GeoIPでいくつかの魔法をしようとしています。ポインタを返すGeoIP_record_by_addr()メソッドを使用して訪問者の都市を返したい。

問題:GeoIPRecord*をchar*に正しくキャストできないようです。私は何時間も試しました。Varnishにエラーや通知なしでVCLファイルをコンパイルさせますが、varnishサーバーは403で応答します。

質問:とにかく、インラインCまたは403ワニスが応答しているのをデバッグできますか?

4

1 に答える 1

4

一般的に、Firebugとvarnishlogはあなたの親友になります。

純粋なVCLをデバッグする場合は、データをHTTPヘッダー([req / bereq / beresp / resp].http。[headername])に送信し、その値をFirebug(またはリクエストが少ない場合はvarnishlog)にチェックインするのが最善の方法です。 )。

インラインCをデバッグする場合は、ヘッダー(VRT_SetHdr())を操作することもできますが、Cコードによってワニスがクラッシュする場合は、その理由が/ var / log/messagesに表示されます。

varnishlogをチェックして、ニスがクラッシュするかどうかを確認することもできます...ただし、ニスがクラッシュすると、403ではなくタイムアウトが発生します...

403を取得する理由を理解するには、VCLを確認する必要がありますが、技術的には、これは「エラー」ではなく「ステータス」であり、リクエストがワニスによって処理されたことを意味します(残念ながら、何らかの理由で禁止されています)。

あなたが彼にそれをするように頼まない限り、私はワニスが403を返すとは思わない。したがって、403ステータスがWebサーバー(バックエンド)から取得される可能性が高くなります。

とにかく、ワニスはクラッシュしていないようですが、動作の問題があります。

于 2011-12-09T22:26:39.320 に答える