最初のファイルにファイルがない場合、HAProxyを別のバックエンドに書き換えさせるにはどうすればよいですか?私が必要なのはerrorloc
、リダイレクトの代わりに書き換えを行うことです。そのため、クライアントはリダイレクトを認識しません。
NginXを念頭に置いてアプリケーションを開発しました。これは、静的ファイル用のリバースプロキシとWebサーバーの両方の負荷分散でした。アプリケーションは、Cookieに基づくスティッキーセッションを必要とするOpaフレームワークに基づいています-NginXとHAproxyの両方でサポートされています。私たちが問題とするアプリケーション機能は、動的コンテンツ生成です。オンデマンドで画像を生成しますが、生成後はディスクに保存され、確定的なパスで静的にアクセスできます。
問題はNginXで簡単に解決されました-ローカルファイルを読み取って、ファイルが欠落している(まだ生成されていない)場合にのみ、負荷分散されたバックエンドを使用しようとします。
server {
server_name wkaliszu.pl;
location /thumb {
root /path_on_disk/to_cached_content;
expires 7d;
# try to access already generated content
try_files $uri @wkaliszu;
}
location / {
# reverse proxy to the application
[...]
}
location @wkaliszu {
# reverse proxy to the application
[...]
}
}
サーバーは移行され、負荷分散にHAPproxyを使用します。これは、Webサーバーではなく、この機能をサポートしていません。これで、クライアントがリソースにアクセスしようとするたびに動的なソフトウェア生成が実行されますが、これは非常に遅く、リソースを浪費します。最初の(静的ファイル用の単純なキャッシングWebサーバー)がエラー404で失敗した場合、次のバックエンドを使用できれば問題ありませんが、簡単な方法を見つけることができません。/thumb
静的ファイルの読み取りを試み、新しいHTTPヘッダーでHAproxyに再度書き込むNginXへのリダイレクトだけが思い浮かびますが、もっと良いものを見つけたいと思います。