Saat ini saya mengkonfigurasi ulang HAProxy menggunakan 1.5dev-17. Apa yang ingin saya lakukan adalah mengembalikan kesalahan 404 ketika tidak ada backend untuk digunakan untuk permintaan tertentu.
Konfigurasi kami saat ini menggunakan default_backend untuk merutekan ke server aplikasi Django kami, tetapi ketika ada banyak permintaan menyelidik (seperti tes pena) yang tidak cocok dengan backend yang dikonfigurasi lainnya, server Django kami terhenti ketika mereka mencoba untuk melayani permintaan yang tidak valid ini, akhirnya mengembalikan 404.
Saya ingin melayani 404 dari HAProxy daripada mendelegasikan ke backend Django. Saat ini saya mencapai ini dengan retasan:
frontend www
...
default_backend nomatch
backend nomatch
errorfile 503 /var/www/http/404.http
Dan dalam file 404.http saya mengatur kode status 404 di header. Ini berhasil, tetapi terasa sangat salah. Apakah ada cara yang lebih baik untuk mencapai ini dengan HAProxy? Atau haruskah saya menggunakan backend biasa dan membiarkannya merespons dengan 404?
sumber
HTTP/1.0 404 Not Found
diikuti oleh beberapa tajuk lainnya, lalu baris kosong, lalu<html>
konten.Jawaban:
Jika Anda setuju dengan salah satu kode respons berikut: 200, 400, 403, 405, 408, 429, 500, 502, 503, atau 504.
Maka Anda dapat melakukan sesuatu seperti ini:
http-request
: http://cbonte.github.io/haproxy-dconv/1.7/configuration.html#4-http-requesterrorfile
: http://cbonte.github.io/haproxy-dconv/1.7/configuration.html#errorfilesumber
Setelah menginginkan sesuatu yang serupa, ini adalah hal yang sama yang saya temukan. Rasanya salah tetapi bekerja sangat baik dalam praktik dan jauh lebih bersih daripada mencoba memasukkan daftar hitam url tertentu. Pastikan untuk meninggalkan komentar sehingga tidak ada yang menganggapnya salah.
sumber