Cara Mengatur Proxy Webserver Apache Di Depan Apache Tomcat di Red Hat Linux

Cara Mengatur Proxy Webserver Apache Di Depan Apache Tomcat di Red Hat Linux

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
Menyalin

Dan jika kita memanggil aplikasi yang sama melalui proxy AJP kita, kita juga harus mendapatkan jawaban, sementara tidak ada konten di root dokumen webserver:

$ wget http: // ws.foobar.com/contoh --2018-09-13 11: 01: 09-- http: // ws.foobar.com/contoh menyelesaikan WS.foobar.com (WS.foobar.com)… . 10.104.1.165 Menghubungkan ke WS.foobar.com (WS.foobar.com) | 10.104.1.165 |: 80… . terhubung. Permintaan http dikirim, menunggu tanggapan… . 302 Ditemukan Lokasi:/Contoh/[berikut] --2018-09-13 11: 01: 09-- http: // ws.foobar.com/ contoh/ menggunakan kembali koneksi yang ada ke WS.foobar.com: 80. Permintaan http dikirim, menunggu tanggapan… . 200 OK Panjang: 1253 (1.2k) [Teks/html] Menyimpan ke: 'Contoh.1 '100%[=============================================== ==================================================== ==================================================== ========================>] 1.253 --.-K/S di 0s 2018-09-13 11:01:09 (101 MB/S)-'Contoh.1 'disimpan [1253/1253]
Menyalin

Jika semua berfungsi, kami akan mendapatkan jawaban dengan konten yang sama, karena jawaban akhir disediakan oleh aplikasi yang sama di dalam wadah:

Contoh $ ekor.1 

Contoh Apache Tomcat

[… .]
Menyalin

Kami juga dapat menguji pengaturan kami dengan browser. Kita perlu memanggil semua URL dengan nama server sebagai host (setidaknya yang diproksi). Untuk itu, mesin yang menjalankan browser harus dapat menyelesaikan nama server, dengan cara DNS atau file host.

Di lingkungan lab kami, kami belum menonaktifkan Tomcat Mendengarkan di antarmuka publik, jadi kami dapat melihat apa yang disediakan ketika ditanya langsung di port 8080:



Tomcat Memberikan Contoh Aplikasi

Kami bisa mendapatkan konten yang sama melalui proxy AJP yang disediakan oleh server web di port 80:

httpd menyediakan aplikasi contoh dengan proxy AJP

Saat bertindak sebagai proxy, httpd dapat melayani konten lainnya. Kami dapat membuat konten statis yang dapat dijangkau di beberapa URL lain di server yang sama:

# mkdir/var/www/html/static_content # echo "konten statis">/var/www/html/static_content/statis.html
Menyalin

Dengan mengarahkan browser kami ke sumber daya baru ini, kami diberikan konten statis baru.

Konten statis disediakan oleh httpd

Jika wadah Tomcat tidak akan dapat dijangkau, kami tidak akan tahu jawaban yang datang di suatu tempat selain server web. Karena kami hanya memproksikan aplikasi tertentu, aplikasi root default wadah tidak dapat dijangkau melalui proxy, sehingga tersembunyi dari segala sesuatu di luar server web.

Kesimpulan

Apache WebServer sangat dapat diperpanjang dengan cara modul, salah satunya adalah modul proxy AJP. Panduan di atas menggunakan satu mesin dan memaparkan satu aplikasi dengan proxy, tetapi server web yang sama dapat memberikan satu entri ke banyak aplikasi, mungkin pada banyak host yang menjalankan wadah aplikasi, sambil menyediakan konten web lainnya juga.

Dikombinasikan dengan modul lain, seperti mod_security, Kami dapat menambahkan banyak fitur ke layanan kami tanpa perlu mengembangkannya di dalam aplikasi, atau jika kebutuhan muncul, mengarahkan kembali proxy ke titik akhir lain dengan edisi tunggal file konfigurasi dan memuat ulang server web, membuat migrasi atau The Pengenalan rilis baru aplikasi ini masalah detik. Reload yang sama dapat membawa pengunjung ke halaman yang menjelaskan downtime yang direncanakan, sementara pemeliharaan dilakukan pada server aplikasi - kasus penggunaan proxy AJP hanya dibatasi oleh imajinasi staf TI TI.

Tutorial Linux Terkait:

  • Ubuntu 20.04 Instalasi Tomcat
  • Hal -hal yang harus diinstal pada ubuntu 20.04
  • Hal -hal yang harus dilakukan setelah menginstal ubuntu 20.04 FOSSA FOSSA Linux
  • File Konfigurasi Linux: 30 Teratas Paling Penting
  • Unduh Linux
  • Can Linux mendapatkan virus? Menjelajahi kerentanan Linux…
  • Tutorial Konfigurasi Proxy Squid di Linux
  • Distro linux terbaik untuk pengembang
  • Panduan Pemecahan Masalah Umum GNU/Linux untuk Pemula
  • Hal -hal yang harus dilakukan setelah menginstal ubuntu 22.04 Jammy Jellyfish…