Cara Mengatur Proxy Webserver Apache Di Depan Apache Tomcat di Red Hat Linux
- 2287
- 301
- Luis Baumbach
Objektif
Tujuan kami adalah untuk mengatur Apache httpd untuk bekerja sebagai proxy di depan wadah aplikasi Apache Tomcat.
Sistem Operasi dan Versi Perangkat Lunak
- Sistem operasi: Red Hat Enterprise Linux 7.5
- Perangkat lunak: Apache httpd, Apache Tomcat
Persyaratan
Akses istimewa ke sistem
Kesulitan
MUDAH
Konvensi
- # - mensyaratkan perintah linux yang diberikan untuk dieksekusi dengan hak istimewa root baik secara langsung sebagai pengguna root atau dengan menggunakan
sudo
memerintah - $ - Diberikan perintah linux untuk dieksekusi sebagai pengguna biasa
Perkenalan
Menggunakan Apache HTTPD sebagai proxy ke wadah aplikasi Apache Tomcat adalah pengaturan umum. Muncul dengan banyak kasus penggunaan, yang paling sepele adalah menyajikan konten statis dari httpd
, Sambil menyediakan layanan yang menerapkan logika bisnis berat dari aplikasi yang ditulis di Java yang berada di wadah Tomcat.
Dengan membuat proxy, kita dapat membuat semacam front-end ke lapisan aplikasi, di mana kita dapat memperkenalkan langkah-langkah keamanan di server web, menerapkan penyeimbangan beban, menggunakan pengalihan bersyarat, atau menggunakan fungsionalitas lain yang disediakan oleh server web. Dengan cara ini kami tidak perlu menerapkan salah satu fitur ini dalam aplikasi kami, dan dapat memfokuskan kemampuannya untuk layanan itu sendiri. Kami akan memiliki server web berfitur lengkap yang disajikan untuk pengguna, beberapa URL yang diteruskan secara diam-diam ke wadah aplikasi yang mungkin tidak dapat diakses dengan sendirinya. Jawaban aplikasi diteruskan kembali ke klien yang tidak akan tahu bahwa mereka berbicara apa pun selain server web - yaitu, jika kita berhati -hati tidak mengekspos informasi apa pun (seperti pesan kesalahan yang tidak ditangani) dari aplikasi yang dapat membuat mereka menebak ada lebih banyak lagi ada lebih banyak lagi dari satu lapisan.
Kami akan menggunakan protokol AJP yang dapat digunakan antara server web dan wadah aplikasi berbasis Java untuk memberikan kemampuan menyeimbangkan beban antara beberapa server aplikasi - namun, untuk mengatur penyeimbang beban berada di luar ruang lingkup tutorial ini.
Kami akan mengonfigurasi pengaturan kami di Red Hat Linux 7.5, tetapi server web apache, modul AJP dan wadah aplikasi Apache Tomcat tersedia di mana -mana, dan dengan demikian pengaturan ini portabel dengan penyesuaian kecil seperti jalur sistem file atau nama layanan.
Menginstal perangkat lunak yang diperlukan
Pertama kita perlu menginstal layanan yang akan kita gunakan. Dalam setup seimbang, server Tomcat bisa berada di mesin yang berbeda, dan seringkali mereka, menyediakan pertanian kontainer yang membangun layanan.
# yum instal httpd tomcat tomcat-webapps
Kami menginstal Tomcat-Webapps
Untuk tujuan pengujian, dalam paket ini adalah contoh aplikasi web yang digunakan ke server Tomcat kami saat instalasi. Kami akan menggunakan aplikasi ini untuk menguji bahwa pengaturan kami berfungsi sebagaimana dimaksud.
Sekarang kami dapat mengaktifkan dan memulai server Tomcat kami:
# Systemctl Aktifkan Tomcat
# Systemctl Mulai Tomcat
Dan server web kami:
# Systemctl Aktifkan httpd
# Systemctl Mulai httpd
Default httpd
Instalasi berisi modul proxy yang kita butuhkan. Untuk memeriksa begitu, kami dapat menanyakan server web Apachectl
:
# apachectl -m | grep AJP proxy_ajp_module (dibagikan)
Menyalin Catatan 1.X Versi Apache Penggunaan mod_jk
modul bukannya proxy_ajp
.
Konfigurasi httpd
Contoh aplikasi web yang digunakan ke tomcat diterbitkan setelah instalasi secara default Server-URL: 8080/contoh
. Kami akan memberikan permintaan proxy yang datang ke port server 80 (port http default) yang meminta sesuatu dari Server-URL/Contoh
untuk dilayani oleh contoh
Aplikasi web digunakan ke tomcat. Permintaan yang datang ke URL lain di server akan dilayani oleh server web. Kami akan mengatur beberapa konten statis untuk menunjukkan fungsi ini.
Dalam contoh kami, server dipanggil WS.foobar.com
. Agar proxy berfungsi, buat file teks dengan editor favorit Anda di bawah direktori konfigurasi drop-in webserver, yaitu /etc/httpd/conf.D
pada rasa topi merah, dengan perpanjangan .conf
. Pengaturan kami tidak perlu Tomcat dapat dijangkau secara langsung, jadi kami menggunakan localhost
Sebagai target host di /etc/httpd/conf.d/example_proxy.conf
mengajukan:
SERVERNAME WS.foobar.com ProxyRequests Off ProxyPass/Contoh AJP: // LocalHost: 8009/Contoh ProxypassReverse/Contoh AJP: // LocalHost: 8009/Contoh
Menyalin Untuk berada di sisi yang aman, kami dapat memverifikasi bahwa konfigurasi kami benar sebelum diterapkan Apachectl
:
# apachectl configTest sintaks ok
Menyalin Jika tes konfigurasi mengembalikan kesalahan seperti berikut:
Tidak bisa menyelesaikan nama host ws.foobar.com - mengabaikan!
Jika berarti kami Nama server
Petunjuk tidak valid, karena tidak dapat diselesaikan oleh server web. Entah kita perlu mendaftarkannya di DNS (lokal atau global), atau memberikan garis di /etc/host
file yang berisi alamat IP publik host diikuti dengan nama yang kami berikan dalam konfigurasi di atas. Jika file host sudah berisi IP dengan nama lain (mungkin nama host asli), kita dapat menambahkan nama servern setelah nama host di baris yang sama, pengaturan akan berfungsi.
Setelah tes yang berhasil kita perlu menerapkan konfigurasi baru dengan memulai kembali server web:
# Systemctl restart httpd
Konfigurasi Tomcat
Dengan Instal Default, Tomcat Container akan mendengarkan permintaan AJP di semua antarmuka di port 8009. Ini dapat diverifikasi dalam file konfigurasi utama:
# view/usr/share/tomcat/conf/server.xml […] […]
Menyalin Jika kita tidak memerlukan wadah Tomcat dan aplikasi di dalam untuk dapat dijangkau sendiri, kita dapat mengatur setiap konektor untuk hanya mendengarkan di localhost:
Alamat konektor = "127.0.0.1 "port = ..."
Untuk mendaftar, kami dapat memulai kembali Tomcat dengan:
# Systemctl Restart Tomcat
Di mesin lab kami tidak akan melakukan ini, karena kami perlu melihat bahwa kami dilayani konten yang sama di kedua port 80
Dan 8080
.
Pengujian
Pengaturan proxy AJP minimal kami selesai, kami dapat mengujinya. Dari baris perintah kita dapat memanggil contoh
Aplikasi langsung 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 Menghubungkan ke WS.foobar.com (WS.foobar.com) | 10.104.1.165 |: 8080… . terhubung. Permintaan http dikirim, menunggu tanggapan… . 302 Lokasi Ditemukan:/Contoh/[berikut] --2018-09-13 11: 00: 58-- http: // ws.foobar.com: 8080/ contoh/ menggunakan kembali koneksi yang ada ke WS.foobar.com: 8080. Permintaan http dikirim, menunggu tanggapan… . 200 OK Panjang: 1253 (1.2k) [Teks/html] Menyimpan ke: 'Contoh' 100%[==================================== ==================================================== ==================================================== ====================================>] 1.253 --.-K/S di 0s 2018-09-13 11:00:58 (102 MB/s)-'Contoh' disimpan [1253/1253]
Menyalin Dan lihat isinya yang disediakan:
Contoh $ ekor Contoh Apache Tomcat
- Contoh Servlets
- Contoh JSP
- Contoh Websocket (JSR356)
- Contoh Websocket Menggunakan Apache Tomcat Proprietary API yang sudah usang