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?

Jawaban:


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

Baca lebih lanjut tentang mod_proxy


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.


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.


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.