İlk dosyayı eksik olduğunda HAProxy nasıl farklı bir arka uca yeniden yazılır? İhtiyacım olan şey errorloc
yeniden yönlendirme yerine yeniden yazma yapmaktır, bu nedenle istemci yeniden yönlendirmenin farkında değildir.
Hem yük dengeleme ters proxy'si hem de statik dosyalar için web sunucusu olan NginX'i düşünerek bir uygulama geliştirdik. Uygulama, hem NginX hem de HAproxy tarafından desteklenen çerezlere dayalı yapışkan oturumlar gerektiren Opa çerçevesine dayanmaktadır. Sorun yaşadığımız uygulama özelliği dinamik içerik üretmektir. İsteğe bağlı görüntüler üretir, ancak oluşturulduktan sonra diske kaydedilir ve deterministik yolla statik olarak erişilebilir.
NginX ile sorun kolayca çözüldü - yerel dosyayı okumaya ve sadece dosya eksikse (henüz oluşturulmadı) yük dengeli arka ucu kullanmaya çalışır:
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
[...]
}
}
Sunucu taşındı ve artık yük dengeleme için web sunucusu olmayan ve bu özelliği desteklemeyen HAPproxy kullanıyor. Artık, istemci kaynağa her erişmeye çalıştığında, çok daha yavaş olan ve kaynakları boşa harcayan dinamik yazılım üretimi gerçekleştirilir. İlk (statik dosyalar için basit önbellek web sunucusu) 404 hatasıyla başarısız olsaydı, sonraki arka ucu kullanabiliyorsa iyi olurdu, ancak basit bir şekilde yapmanın bir yolunu bulamıyorum. Yönlendirme /thumb
Yeni HTTP başlığıyla HAProxy statik dosyayı okumaya çalışır ve tekrar yeniden yazar Nginx, sadece aklıma geliyor, ama ben daha iyisini bulmak istiyoruz.