Bagaimana cara Mengecualikan URL untuk Apache Mod_proxy?

23

Kami memiliki dua server Apache sebagai front-end dan 4 tomcat server sebagai back-end yang dikonfigurasi menggunakan modul mod_proxy sebagai penyeimbang beban. Sekarang, kami ingin mengecualikan url kucing jantan tunggal dari penyeimbang beban mod_proxy. Apakah ada cara atau aturan untuk dikecualikan?

Pengaturan Proxy Balancer:

<Proxy balancer://backend-cluster1>
   BalancerMember http://10.0.0.1:8080 loadfactor=1 route=test1 retry=10
   BalancerMember http://10.0.0.2:8080 loadfactor=1 route=test2 retry=10
</Proxy>
Mughil
sumber

Jawaban:

39

Anda mengecualikan jalur dari mod_proxy dengan tanda seru (!) Sebelum pernyataan ProxyPass lengkap Anda, yang sampel Anda tidak ada - Ini akan terlihat seperti ProxyPass /path balancer://backend-cluster1. Karena itu, untuk mengecualikan jalur, tambahkan:

ProxyPass /my/excluded/path !

sebelum

ProxyPass /my balancer://backend-cluster1
Alastair McCormack
sumber
Tetapi url untuk memiliki akses di belakang proxyBalancer
Mughil
Terima kasih fuzzyfelt, saya bertanya bagaimana mengecualikan url jika kami mengkonfigurasi penyeimbang proxy. Saya telah memasukkan konfigurasi proksi dalam pertanyaan
Mughil
1
Lihat jawaban yang diperbarui. Tambahkan pengecualian sebelum Anda menentukan jalur mana ke proxypass.
Alastair McCormack
2
Menggunakan jawaban ini bekerja sangat baik untuk memungkinkan LetsEncrypt ke lokasi folder default terkenal untuk virtualhost, ketika menggunakan ProxyPass untuk menunjukkan server obrolan di sana. Tambahkan sebelum arahan lain: ProxyPass /.well-known!
Profesor Falken
2

Selain jawaban Alastair McCormack: Jika Anda menggunakan <Location>, Anda harus meletakkan pengecualian di bawah ini daripada sebelumnya:

<Location /my/>
    ProxyPass balancer://backend-cluster1
</Location>

<Location /my/excluded/path/>
    ProxyPass !
</Location>
bingkai
sumber
-2

Anda bisa meletakkan penulisan ulang di atas arahan proxy yang akan memberi pengguna kesalahan 404 ketika mereka mencoba mengakses url yang ingin Anda kecualikan. Anda harus mengaktifkan rewrite_module.

<Location ~ ^/urltoblock($|/)>
   RewriteEngine On 
   RewriteRule .* - [L,R=404]
</Location>
Pablo
sumber
Dia tidak mengatakan apa-apa tentang menginginkan kesalahan 404.
user207421