Apache VirtualHost Proxy dengan Subdirektori

13

Saat ini, kami memiliki server IIS sebagai server web utama kami. Kami menerapkan server Apache sebagai gantinya, tetapi masih harus memiliki server IIS yang dapat diakses. Biasanya, ini adalah hal yang sederhana, karena Apache2 dapat mem-proxy sebuah subdomain ke server ini.

Masalah kami, bagaimanapun, adalah ini: kami menggunakan dotnetCharting pada server IIS, dan lisensi terkait dengan nama domain. Agar dotnetCharting berfungsi, lisensi lain harus dibeli.

Pertanyaan saya adalah, bisakah Apache2 proxy subdirektori? Misalnya, dapatkah 'www.example.com/subdir' menunjuk ke server IIS? Sepertinya itu seharusnya tidak mungkin, tetapi saya tidak bisa menemukan solusi untuk ini.

SuperJer
sumber

Jawaban:

19

Tentu. Tetapi berhati-hatilah; banyak aplikasi web tidak dirancang dengan baik karena perubahan jalur URL-nya. Apakah aplikasi yang digunakan dalam sub-direktori saat ini?

# You'll probably want this to maintain the host mapping in IIS
ProxyPreserveHost On
# Swap in the IP address or internal host name of your IIS server:
ProxyPass /subdir/ http://192.0.2.100/subdir/

Atau, jika Anda mengubah jalur URL, ingatlah bahwa banyak aplikasi akan mengalami masalah dengan ini, karena jalur absolut untuk sumber daya (CSS, javascript, gambar):

ProxyPass /subdir/ http://192.0.2.100/
ProxyPassReverse /subdir/ http://192.0.2.100/
Shane Madden
sumber
Sempurna! Itu berhasil di lingkungan pengujian saya. Saat ini, secara internal, Anda dapat memasukkan alamat IP server dan menggunakan proksi internal kami untuk sampai ke server, dan semuanya (kecuali dotnetcharting) berfungsi dengan baik, jadi saya tidak berharap aplikasi gagal ketika kami proksi dengan metode ini. Sangat dihargai!
SuperJer
1
Saya harus meninggalkan jejak /dari subdir(seperti ini /subdir:). Sebaliknya jika domain.com/subdirmenghasilkan kesalahan aplikasi (500). Itu akan proksi dengan benar jika slash dimasukkan ( domain.com/subdir/), tapi itu bukan efek yang saya cari.
OneHoopyFrood
3

Tentu.

  1. Aktifkan mod_proxy mod_proxy_http
  2. atur instruksi berikut di Apache VHost Anda

    ProxyPass /subdir http://iis.server/.../
    ProxyPassReverse /subdir http://iis.server/.../
    

Perhatikan bahwa "/" yang terakhir adalah wajib.

Untuk informasi lebih lanjut: http://httpd.apache.org/docs/2.2/mod/mod_proxy.html

NCH
sumber
0

tebasan akhir pada akhirnya TIDAK wajib. Saya sudah setup seperti ini

ProxyPass /dir http://exmpale.com/dir/ 

ProxyPassReverse /dir http://exmpale.com/dir/ 

dan tingkat atas berhasil tetapi semua yang ada di subdirektori di bawah yang utama tidak.

Saya mengubahnya menjadi ini dan semuanya bekerja.

Terima kasih atas informasi yang salah !!!

ProxyPass /dir http://exmpale.com/dir

ProxyPassReverse /dir http://exmpale.com/dir
linux geek kesal
sumber
1
Mengapa orang downvote ini? Persis itulah masalah yang saya miliki. Anda harus mengakhiri kedua url dengan garis miring atau membiarkan kedua url tanpa garis miring .... setidaknya bagi saya itu membantu ketika datang ke sub direktori;)
Jannik