問題タブ [varnish]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby-on-rails - ESI:includeを介したCookieの設定、方法は?
私はesiを使用して私のサイトで忍者のキャッシュを作成しようとしています。アイデアは、サイトはほとんど静的であり、ユーザーがログインしているかどうかにかかわらず、私はただ凝ったことをする必要があるということです。そのため、ページAにを配置し、ページBのアプリケーションにトリガーを設定しようとしました。
このようにして、ページAをニスにキャッシュし、サーバーにページBという小さな作業を処理させることができます。
しかし、ページBで設定したCookieは、ページAのヘッダーに転送されず、機能しませんでした= /
これは私が可能にしようとしていることですか?
ajaxを使用することもできますが、ページをユーザーに送信する前にサーバー内でこれを行う方が正しいようです。
ps:esiタグを作成できません= /
http - プライマリ サーバーから 404 を受け取った場合に、いくつかのリソースに対して 2 番目のサーバーを試すように Varnish を構成できますか?
生成されたコンテンツを Web ブラウザーに提供する必要があるため、これは私にとって完璧なソリューションです。私の計画は、オンデマンドでコンテンツを生成し、次回のために保存することです。ブラウザーが (コンテンツを生成する) 私のサービスを毎回呼び出すのは望ましくありません。利用可能な場合は「キャッシュされた」リソースに直接アクセスし、利用できない場合にのみサービスを呼び出すようにします。したがって、サービスを実行するサーバー A と、以前に生成されたコンテンツ バージョンを格納するサーバー B の前に Varinsh を配置します。キャッシュされていないリソースのリクエストを受け取った場合、サーバー B を試します。404 応答を取得すると、サーバー A から同じリソースをリクエストします。
Varnish を VCL でそのように設定できますか? そうでない場合、あなたが知っているような解決策はありますか?
PS ブラウザに 302 リダイレクトを送信したくありません。また、404 の代わりにそのようなリダイレクトを送信するようにサーバー B を制御することもできません。
drupal - キャッシュされていないページでは、ニスページのリロード(F5)に長い時間がかかります
状況:Varnish 2.1.4 lenny(最新の安定版)がmod_phpを使用してDebian/Apacheで正常に実行されています。
このサーバーで複数のDrupalサイトを実行していて、一部はVarnishで拡張されています(たとえば、Pressflowを使用)。これらのサイトは期待どおりに機能します。
リバースプロキシを使用していない他のサイトは、アドレスを入力するかクリックすると正常に読み込まれますが、F5またはCtrl + F5を使用してページを更新すると、読み込みに非常に長い時間(30〜45秒)かかります。 。
VCL構成ではないと思います。これらのドメインの1つに対して即時にリターン(パス)を実行すると、問題は解決しません。これはこの問題に関連している可能性がありますか?
perl - Strange problem getting $ENV{'QUERY_STRING'}
I'm having a strange problem here. I'm moving a (working) site to a new apache server to which I don't have direct access (I have to go through two people to get stuff done).
The site uses a perl script called adframe to parse html templates. The URLs with which it's called look like /cgi-bin/adframe/index.html?x=something
with adframe
being the script. The missing suffix never caused any real problems. But on this new Ubuntu server $ENV{'QUERY_STRING'}
is always empty. $ENV{'REQUEST_METHOD'}
shows up correctly as GET, but the query_string shows nothing ...
Regular *.cgi scripts show the query_string without problems.
From the logs I gathered that the server seems to be running fastcgi, mod_fcgid and the server doesn't even accept .pl as an extension for scripts. I don't have that much experience with server software, but I figured it might be a problem with the server not accepting adframe as a cgi script and thus not passing the query_string correctly ... Can anyone give me a few hints to where I could point the administrator or maybe something I could do in .htaccess myself? Anyway to make sure, adframe
is recognized as a cgi script!? (if that's the problem ...)
Any help is appreciated! thomas
EDIT: I found more details: The server seems to be running a VARNISH cache ... thats's the main difference to my usual configurations ... Also, the way the script works is, if you call /cgi-bin/adframe/somedir/somefile.html?x=something, $ENV{PATH_INFO} tells which template to parse and $ENV{QUERY_STRING} is, well, the query string. Now the query string is empty, but if I call /cgi-bin/adframe?x=something (without any PATH_INFO), the query string shows up! Does anyone have an idea what's going on here? thanks!
tomcat - Tomcat の server.xml ホスト コンテナーと Varnish
過去に、ホスト コンテナーを使用して、次のようにルート uri を tomcat webapp にルーティングしました。
私は現在 Varnish を使用していますが、この方法は機能していないようです。Varnish の「default.vcl」ファイルからの関連コードは、この webapp の GET および POST 要求がバックエンドに直接渡されることを指定しています。そのバックエンドは「127.0.0.1」です。これは、Tomcat が「myapp.mydomain.com」に対して行われたリクエストを認識せず、代わりに「127.0.0.1」に対して行われたリクエストを確認するということですか?
したがって、私のserver.xmlの上記のコードでは、何も変更されていないようです。myapp.mydomain.com/myapp にアクセスできますが、myapp.mydomain.com は引き続きデフォルトの tomcat ページに移動します。この作業を行うために何ができるかの手がかりはありますか?
memcached - Memcache(d) と Varnish の比較による 3 層 Web アーキテクチャの高速化
ベンチマーク (3 層 Web アーキテクチャ) を高速化しようとしていますが、Memcache(d) と Varnish に関する一般的な質問があります。
違いはなんですか?Varnish
は Web サーバーの背後にあり、Web ページをキャッシュし ており、コードを変更する必要はなく、構成のみが必要なようです。 一方、Memcachedは汎用キャッシング システムであり、主にデータベースからの結果をキャッシュするために使用され、メソッド (最初のキャッシュ ルックアップ) を変更する必要があります。get
両方を使用できますか? フロントWebサーバーとデータベースキャッシング用のMemcachedにニスを塗りますか?
より良いオプションは何ですか?
(シナリオ 1 - 主に書き込み、
シナリオ 2 - 主に読み取り、
シナリオ 3 - 読み取りと書き込みは類似しています)
memcached - ソフトウェアキャッシュベンチマーク
私は自分でいくつかのベンチマーク測定を実行しようとしています。アイデアは、いくつかのよく知られたバニラWebベンチマーク(RUBiS、TPC-Wなど)とそれらの調整されたバージョン(フロントApacheのVarnishリバースプロキシとフロントデータベースのソフトウェアキャッシュ)を使用することです。私にはいくつかのジレンマがあります:
ワニスは、インストールと構成が「比較的簡単」である必要があります。しかし、私はキャッシュについてもっと心配しています。私が正しく理解していれば、ソフトウェアキャッシュ(Memcached、Redisなど)ではコードを変更する必要があります。これは、ベンチマーク(潜在的に多数のサーブレット)の各データベースコマンドを変更し、MemcachedAPIを使用する必要があることを意味します。これは正しいです?
次に、この結果がすぐに必要になるので、代替手段(コードの変更を必要としないソフトウェアキャッシュ、またはすでにMemcached APIが組み込まれているベンチマーク)はありますか?
ありがとう。
varnish - ワニス ESI は認識されているが含まれていない
皆さんこんにちは。Varnish で Edge Side Includes を使用して静的 HTML シェルをキャッシュし、動的 HTML と JSON オブジェクトを含めています。
HTML の ESI は正しく含まれていますが、JSON オブジェクトの ESI は含まれていません。デバッグ ステートメントは、Varnish がそれを認識することを確立しますが、JSON ESI を含めないことを不可解に決定します。
ローディング構造は次のとおりです。
繰り返しますが、esi 1とesi 3は問題なく動作しますが、esi 2は含まれていません。esi 2のコンテンツは次のとおりです。
XML のように見えない ESI コードがエラーを引き起こすことを読んだので、ランタイム パラメーターesi_syntax=0x7を設定しました。さいころはありませんが、少なくともデバッグ データを取得しています。
esi 2の壊れた呼び出しは次のようになります。
そして、esi 3の (動作中の) 呼び出しは次のようになります。
前述したように、Varnish は ESI をインクルードしようとしていることを認識しているように見えますが、varnishlog から得られる唯一の関連するデバッグ メッセージは次のとおりです。
クライアントに表示される出力には、すべての通常のコンテンツが含まれていますが、 <esi> タグはそのまま残されています。これは、上記のデバッグ メッセージに表示されているものとまったく同じように見えます。
esi 2 が解析/インクルードされない理由を知っている人はいますか? どんな助けでも大歓迎です!
heroku - Varnish Edge Side includes (ESI) は Heroku でサポートされていますか?
Edge Side includes が Heroku の Varnish 実装でサポートされているかどうか知っている人はいますか?
更新: 最終的に、Varnish の実装について Heroku に問い合わせるサポート リクエストを提出しました。ここに私の要求があります:
こんにちは、ワニスの実装が Edge Side includes をサポートしているかどうか疑問に思っていましたか? ワニスの実装でサポートされているものとサポートされていないものに関する情報はありますか? (たとえば、他の場所で、エントリを PURGE できないと読んだことがありますか?)
...そして彼らの反応:
ESI はサポートしていません。ただし、デプロイごとにワニス キャッシュを消去します。これにより、コードの一部である静的アセットがデプロイ時に確実に削除されるため、キャッシュは新しいアセットまたは変更されたアセットをピックアップします。
お役に立てれば。
-クリス
もちろん、PURGE とはルートを手動でパージすることを意味しており、これはサポートされていません。
ruby-on-rails - Railsアプリをだまして別のポートにあると思い込ませる
ポートで実行されているRailsアプリがあり8080
、ポート80で実行されていると考えるために騙す必要があります。
ポートでVarnishを実行し、80
ポートでnginxにリクエストを転送して8080
いますが、ユーザーがOmniAuthでログインしようとし、Devise gemがサーバーにリダイレクトするURLを生成すると、ポート8080であると見なされ、ユーザーに表示されます。
Railsアプリをだましてポートを80としてハードコーディングする方法はありますか(これは悪い習慣だと思います)、またはnginxにポート80で実行されているかのようにリクエストを転送させる方法はありますか?
Railsアプリへのnginxプロキシを実行していないため、ポートをだます方法を考えることができません。
誰かが以前にこの問題に遭遇したことがありますか?もしそうなら、それを修正するためにどのような構成が必要ですか?
前もって感謝します!
編集:nginxとVarnishの両方が同じサーバーで実行されています。