Meneruskan permintaan apache (port 80) ke Tomcat (port 8080)?

8

Saya ingin menjalankan aplikasi Tomcat melalui URL situs web biasa, seperti www.xyz.com. Saya ingin agar root domain ini bertindak sebagai direktori dasar untuk aplikasi web, sehingga setiap permintaan www.xyz.com/a/b/cmenjadi www.abc.com:8080/myApp/a/b/c. Idealnya, saya bisa melakukan ini secara transparan dan hanya untuk aplikasi web tertentu.

www.abc.com:8080 harus tetap menanggapi permintaan.

Apa yang harus saya lakukan untuk mewujudkannya?

Stefan Kendall
sumber

Jawaban:

14
ProxyPass        / http://www.abc.com:8080/myApp/
ProxyPassReverse / http://www.abc.com:8080/myApp/

Baca lebih lanjut tentang mod_proxy

PTman
sumber
ini adalah solusi terbaik untuk melakukan ini
Mike
1
Untuk mengatasi sisi "hanya untuk aplikasi web tertentu", cukup buat jalur pengalihan lebih dalam. Jadi: ProxyPass / a / b / c abc.com:8080/myApp/a/b/c ProxyPassReverse / a / b / c abc.com:8080/myApp/a/b/c Untuk mem- proxy semua kecuali jalur tertentu, tinggalkan baris ProxyPassReverse tetapi ganti baris ProxyPass dengan RewriteRules (pastikan untuk menggunakan opsi [P] untuk proxy daripada mengarahkan ulang), dan buat aturan sebelumnya untuk tidak mem-proxy jalur tersebut. RewriteRule / notproxied - [L] RewriteRule /(.*) abc.com:8080/myApps/$1 [P] ProxyPassReverse / abc.com:8080/myApp
Jeremy M
di mana saya menambahkan baris-baris itu?
Mina Michael
@MinaMichael Dokumentasi mod_proxy menyatakan: Konteks: konfigurasi server, virtual host, direktori
ptman
3

Metode yang lebih sederhana untuk melakukan ini adalah dengan hanya menambahkan entri Virtual Host di file conf Apache Anda. Biasanya terletak di / etc / httpd / conf, tambahkan sesuatu seperti ini di akhir bagian Virtual Host:

<VirtualHost X.X.X.X:80>
ServerName tomcatpage.yourdomain.com
ServerAlias tomcatpage.yourdomain.com
Redirect permanent / http://tomcatpage.yourdomain.com:8080/
</VirtualHost>

Mulai ulang layanan Apache Anda dan Anda selesai.


sumber
3

Anda dapat menggunakan mod_rewrite di Apache untuk melakukan ini. Muat mod_rewrite di Apache Anda dan di www.xyz.com vhost Anda tambahkan aturan berikut:

RewriteRule ^/(.*) http://www.abc.com:8080/myApp/$1

Ini harus melakukan keajaiban.

Info lebih lanjut tentang mod_rewrite di sini .

EDIT : Untuk menjaga nama situs di browser, gunakan mod_proxy juga dengan hanya menambahkan [P] di akhir RewriteRule:

RewriteRule ^/(.*) http://www.abc.com:8080/myApp/$1 [P]

Ini akan memaksa Apache untuk bertindak sebagai proxy untuk URL itu, bukan hanya menulis ulang URL.

Marco Ramos
sumber
Ini menyebabkan peramban benar-benar mengarahkan ulang. Ini berfungsi, tapi saya lebih suka jika situs muncul www.xyz.comdari sisi pengguna.
Stefan Kendall
1
gunakan mod_proxy juga, dan pada akhir RewriteRule tambahkan [P], seperti ini: RewriteRule ^ / (. *) abc.com:8080/myApp/$1 [P]. Saya juga mengedit jawaban di atas untuk memasukkan info ini.
Marco Ramos