ProxyPreserveHost pada aturan proxypass individu

8

Saya memiliki dua aturan proxypass di host web saya, satu yang menunjuk ke contoh pernis lokal untuk tujuan caching, yang saya inginkan untuk ProxyPreserveHost diaktifkan, dan yang lain menunjuk ke situs host pihak ketiga, yang saya inginkan untuk menonaktifkan ProxyPreserveHost. Apakah ada yang bisa saya lakukan ini berdasarkan aturan / pass?

580pertanian
sumber

Jawaban:

13

Di bawah Apache 2.2, tidak - ProxyPreserveHostarahan hanya valid dalam konfigurasi server atau konteks host virtual ; Anda memerlukan ProxyPasspernyataan berbeda di host virtual yang berbeda.

Di Apache 2.4, ya - konteks direktori telah ditambahkan untuk arahan , jadi Anda sekarang dapat melakukan sesuatu seperti:

<Location /to-varnish/>
    ProxyPreserveHost On
    ProxyPass http://127.0.0.1:8000/to-varnish/
</Location>
<Location /to-third-party/>
    ProxyPreserveHost Off
    ProxyPass http://third-party-site.com/
</Location>
Shane Madden
sumber
3

Anda bisa dengan bantuan RequestHeader

ProxyPreserveHost On
<LocationMatch third-party-pattern>
   RequestHeader  set  Host  third-party-vhost-name
   ProxyPassMatch  http://third-party-server
</LocationMatch>
<LocationMatch varnish-pattern>
   ProxyPassMatch  http://varnish-server
</LocationMatch>
Sorin
sumber
0

Saya tidak dapat meningkatkan tanggapan Sorin ...

Dalam situasi lokal kami menjalankan Apache 2.2, dan aplikasi utama membutuhkan proxypreservehost (penulis CQ / AEM) untuk masuk, tetapi mitra kami proksi untuk memerlukan host mereka di header host.

Kita tidak perlu melakukan ini dengan regex, sebuah regular <Location...>berfungsi dengan baik.

Dari dokumentasi ( http://httpd.apache.org/docs/2.2/mod/core.html#lokasi ):

Arahan membatasi ruang lingkup arahan terlampir dengan URL.

Solusi ini bekerja untuk kita:

  <Location /[path]/ >
    RequestHeader set Host [thirdparty]
  </Location>
  RewriteRule ^/[path]/(.*) https://[thirdparty]/$1 [P,NC,L]

Ini menetapkan header host untuk permintaan ini ke nama host mitra.

Dengan itu, kami dapat terus masuk ke CQ / AEM penulis DAN proxy ke layanan mitra menggunakan header host yang diharapkan.

Chris
sumber