Saya tahu bahwa jawaban saya agak tumpang tindih dengan beberapa jawaban lainnya, tetapi ini adalah solusi lengkap yang memiliki beberapa kelebihan. Ini bekerja pada Tomcat 8:
- Aplikasi utama dilayani dari root
- Penyebaran file perang melalui antarmuka web dipertahankan.
- Aplikasi utama akan berjalan pada port 80 sementara hanya admin yang memiliki akses ke folder manajemen (saya menyadari bahwa sistem * nix membutuhkan superuser untuk mengikat ke 80, tetapi pada windows ini bukan masalah).
Ini berarti bahwa Anda hanya perlu me-restart tomcat sekali, dan setelah file perang yang diperbarui dapat digunakan tanpa masalah.
Langkah 1: Di file server.xml, cari entri konektor dan ganti dengan:
<Connector
port="8080"
protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<Connector
port="80"
protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
Langkah 2: Tentukan konteks dalam <Host ...>
tag:
<Context path="/" docBase="CAS">
<WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>
<Context path="/ROOT" docBase="ROOT">
<WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>
<Context path="/manager" docBase="manager" privileged="true">
<WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>
<Context path="/host-manager" docBase="host-manager" privileged="true">
<WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>
Perhatikan bahwa saya membahas semua aplikasi di folder webapp. Yang pertama secara efektif mengganti aplikasi root dan utama dari posisi. ROOT sekarang aktif http://example.com/ROOT
dan aplikasi utama menyala http://example.com/
. Aplikasi web yang dilindungi kata sandi memerlukan privileged="true"
atribut.
Ketika Anda menggunakan file CAS.war yang cocok dengan root ( <Context path="/" docBase="CAS">
Anda harus memuat ulang yang di panel admin karena tidak menyegarkan dengan penyebaran.
Jangan sertakan <Context path="/CAS" docBase="CAS">
dalam konteks Anda karena menonaktifkan opsi manajer untuk menyebarkan file perang. Ini berarti Anda dapat mengakses aplikasi dengan dua cara: http://example.com/
danhttp://example.com/APP/
Langkah 3: Untuk mencegah akses yang tidak diinginkan ke folder root dan manager, tambahkan a valve
ke tag konteks seperti ini:
<Context path="/manager" docBase="manager" privileged="true">
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
addConnectorPort="true"
allow="143\.21\.2\.\d+;8080|127\.0\.0\.1;8080|::1;8080|0:0:0:0:0:0:0:1;8080"/>
</Context>
Ini pada dasarnya membatasi akses ke folder aplikasi web admin untuk orang-orang dari domain saya sendiri (alamat IP palsu) dan localhost ketika mereka menggunakan port default 8080 dan mempertahankan kemampuan untuk menyebarkan file perang secara dinamis melalui antarmuka web.
Jika Anda ingin menggunakan ini untuk beberapa aplikasi yang menggunakan alamat IP yang berbeda, Anda dapat menambahkan alamat IP ke konektor ( address="143.21.2.1"
).
Jika Anda ingin menjalankan beberapa aplikasi web dari root, Anda dapat menduplikasi tag Layanan (menggunakan nama yang berbeda untuk yang kedua) dan mengubah docbase dari <Context path="/" docBase="CAS">
ke misalnya <Context path="/" docBase="ICR">
.