Cara Menyiapkan Proksi Webserver Apache Di hadapan Apache Tomcat di Red Hat Linux
- 1402
- 34
- Clarence Tromp
Objektif
Objektif kami adalah untuk menyiapkan Apache Httpd untuk berfungsi sebagai proksi di hadapan bekas permohonan Apache Tomcat.
Sistem operasi dan versi perisian
- Sistem operasi: Red Hat Enterprise Linux 7.5
- Perisian: Apache Httpd, Apache Tomcat
Keperluan
Akses istimewa ke sistem
Kesukaran
Mudah
Konvensyen
- # - Memerlukan arahan Linux yang diberikan untuk dilaksanakan dengan keistimewaan akar sama ada secara langsung sebagai pengguna root atau dengan menggunakan
sudo
perintah - $ - Memandangkan perintah Linux dilaksanakan sebagai pengguna yang tidak berkadar biasa
Pengenalan
Menggunakan Apache Httpd sebagai proksi ke bekas aplikasi Tomcat Apache adalah persediaan biasa. Ia datang dengan banyak kes penggunaan, yang paling remeh adalah melayani kandungan statik dari httpd
, Semasa menyediakan perkhidmatan yang melaksanakan logik perniagaan berat dari permohonan yang ditulis di Java yang tinggal di dalam bekas Tomcat.
Dengan membuat proksi, kita boleh membuat semacam front-end ke lapisan aplikasi, di mana kita dapat memperkenalkan langkah-langkah keselamatan di webserver, memohon pengimbangan beban, menggunakan redirect bersyarat, atau menggunakan sebarang fungsi lain yang disediakan oleh webserver. Dengan cara ini kita tidak perlu melaksanakan mana -mana ciri ini dalam aplikasi kami, dan boleh memfokuskan keupayaannya kepada perkhidmatan itu sendiri. Kami akan mempunyai webserver yang lengkap untuk pengguna, beberapa URL yang dikemukakan secara senyap ke bekas aplikasi yang mungkin tidak dapat diakses dengan sendirinya. Jawapan permohonan dikemukakan kembali kepada pelanggan yang tidak akan tahu bahawa mereka bercakap apa -apa selain webserver - iaitu, jika kita berhati -hati tidak mendedahkan apa daripada satu lapisan.
Kami akan menggunakan protokol AJP yang boleh digunakan di antara webservers dan bekas aplikasi berasaskan Java untuk memberikan keupayaan untuk mengimbangi beban antara pelayan pelbagai aplikasi - bagaimanapun, untuk menubuhkan pengimbang beban adalah keluar dari skop tutorial ini.
Kami akan mengkonfigurasi persediaan kami di Red Hat Linux 7.5, tetapi webserver Apache, modul AJP dan bekas aplikasi Apache Tomcat boleh didapati di mana -mana, dan oleh itu persediaan ini mudah alih dengan pelarasan kecil seperti laluan sistem fail atau nama perkhidmatan.
Memasang perisian yang diperlukan
Pertama kita perlu memasang perkhidmatan yang akan kita gunakan. Dalam persediaan seimbang beban Tomcat Server (s) boleh berada di mesin yang berbeza, dan selalunya mereka, menyediakan ladang bekas yang membina perkhidmatan.
# yum Pasang Httpd Tomcat Tomcat-WebApps
Kami memasang Tomcat-Webapps
Untuk tujuan ujian, dalam pakej ini adalah contoh aplikasi web yang digunakan ke dalam pelayan Tomcat kami pada pemasangan. Kami akan menggunakan aplikasi ini untuk menguji bahawa persediaan kami berfungsi seperti yang dimaksudkan.
Sekarang kita dapat mengaktifkan dan memulakan pelayan Tomcat kami:
# Systemctl Dayakan Tomcat
# Systemctl Mula Tomcat
Dan webserver kami:
# Systemctl Dayakan Httpd
# Systemctl Mula Httpd
Lalai httpd
Pemasangan mengandungi modul proksi yang kami perlukan. Untuk memeriksa bahawa ia begitu, kita boleh menanyakan webserver dengan Apachectl
:
# apachectl -m | grep ajp proxy_ajp_module (dikongsi)
Salinan Nota: 1.X Apache menggunakan versi mod_jk
modul bukan proxy_ajp
.
Konfigurasi HTTPD
Contoh aplikasi web yang dikerahkan ke Tomcat diterbitkan selepas pemasangan secara lalai pelayan-url: 8080/contoh
. Kami akan permintaan proksi yang datang ke port pelayan 80 (port HTTP lalai) yang meminta sesuatu dari Server-URL/Contoh
untuk disampaikan oleh contoh
Aplikasi Web yang dikerahkan ke Tomcat. Permintaan yang datang ke mana -mana URL lain di pelayan akan disampaikan oleh pelayan web. Kami akan menyediakan beberapa kandungan statik untuk menunjukkan fungsi ini.
Dalam contoh kami pelayan dipanggil WS.Foobar.com
. Untuk proksi untuk berfungsi buat fail teks dengan editor kegemaran anda di bawah direktori konfigurasi drop-in webserver, iaitu /etc/httpd/conf.d
pada rasa topi merah, dengan lanjutan .Conf
. Persediaan kami tidak memerlukan Tomcat dapat dicapai secara langsung, jadi kami gunakan localhost
sebagai tuan rumah sasaran di /etc/httpd/conf.d/contoh_proxy.Conf
Fail:
ServerName Ws.Foobar.com proxyrequests off proxypass/contoh ajp: // localhost: 8009/contoh proxypassreverse/contoh ajp: // localhost: 8009/contoh
Salinan Untuk berada di sisi yang selamat, kami dapat mengesahkan bahawa konfigurasi kami betul sebelum memohon Apachectl
:
# Apachectl Configtest Syntax OK
Salinan Jika ujian konfigurasi mengembalikan ralat seperti yang berikut:
Tidak dapat menyelesaikan nama hos ws.Foobar.com - mengabaikan!
Sekiranya bermaksud bahawa kita Nama pelayan
Arahan tidak sah, kerana ia tidak dapat diselesaikan oleh webserver. Sama ada kita perlu mendaftarkannya di DNS (tempatan atau global), atau memberikan garis di /etc/hos
fail yang mengandungi alamat IP awam tuan rumah diikuti dengan nama yang kami berikan dalam konfigurasi di atas. Sekiranya fail tuan rumah sudah mengandungi IP dengan nama lain (mungkin nama hos sebenar), kita boleh menambah nama serveren selepas nama tuan rumah dalam baris yang sama, persediaan akan berfungsi.
Selepas ujian yang berjaya, kami perlu menggunakan konfigurasi baru dengan memulakan semula webserver:
# Systemctl mulakan semula httpd
Konfigurasi Tomcat
Dengan lalai memasang bekas Tomcat akan mendengar permintaan AJP pada semua antara muka di port 8009. Ini boleh disahkan dalam fail konfigurasi utama:
# Lihat/usr/share/tomcat/conf/pelayan.XML [...] [...]
Salinan Jika kita tidak memerlukan bekas Tomcat dan aplikasi dalam dapat dicapai dengan sendirinya, kita boleh menetapkan setiap penyambung untuk mendengar hanya di localhost:
Alamat Penyambung = "127.0.0.1 "port = ..."
Untuk memohon, kita boleh memulakan semula Tomcat dengan:
# Systemctl mulakan semula tomcat
Di mesin makmal kami tidak akan melakukan ini, kerana kami perlu melihat bahawa kami dihidangkan kandungan yang sama di kedua -dua pelabuhan 80
dan 8080
.
Ujian
Persediaan proksi AJP minimum kami selesai, kami dapat mengujinya. Dari baris arahan kita boleh memanggil contoh
Permohonan terus di port 8080
:
$ wget http: // ws.Foobar.com: 8080/contoh --2018-09-13 11: 00: 58-- http: // ws.Foobar.com: 8080/contoh menyelesaikan WS.Foobar.com (Ws.Foobar.com) .. . 10.104.1.165 Menyambung ke WS.Foobar.com (Ws.Foobar.com) | 10.104.1.165 |: 8080 .. . bersambung. Permintaan HTTP dihantar, menunggu tindak balas .. . 302 Ditemui Lokasi:/Contoh/[berikut] --2018-09-13 11: 00: 58-- http: // ws.Foobar.com: 8080/ contoh/ penggunaan semula sambungan yang ada ke WS.Foobar.com: 8080. Permintaan HTTP dihantar, menunggu tindak balas .. . 200 ok panjang: 1253 (1.2k) [Text/html] Penjimatan ke: 'Contoh' 100%[=========================================================================================== ================================================= ================================================= =================================>] 1,253 --.-K/s dalam 0s 2018-09-13 11:00:58 (102 MB/s)-'Contoh' disimpan [1253/1253]
Salinan Dan lihat kandungan yang disediakan:
Contoh $ Tail Contoh Apache Tomcat
- Contoh servlet
- Contoh JSP
- Contoh WebSocket (JSR356)
- Contoh WebSocket menggunakan API Proprietari Apache Tomcat yang telah ditetapkan