Saya memiliki pengaturan yang aneh. Ini terlihat seperti ini:
Browser ----------> HTTPs Proxy ------> Apache HTTP -----> Tomcat AJP
HTTPS HTTP AJP
Pada proksi HTTPS (proksi yang sangat bodoh), sebuah URL muncul seperti https: //proxy.domain.com/app. Itu kemudian diteruskan ke Apache menggunakan HTTP seperti http: //apache.domain.com/app (lewat host proxy.domain.com). Apache kemudian menyetel permintaan secara lokal menggunakan protokol AJP ke ajp: // localhost: 8009 / app /.
Terkadang server aplikasi ingin mengarahkan jalur yang diminta. Misalnya, redirect / app / ke / app / webapp. Jadi, ia mengirimkan 302 kembali ke apache mengarahkan ulang jalan - mungkin sesuatu seperti ajp: // localhost: 8009 / app / webapp. Apache kemudian menulis ulang URL pengalihan ke http: //proxy.domain.com/app/webapp. Proxy HTTPS bodoh, sehingga tidak menganalisis pengalihan dan mengubah http ke https.
Jadi, saya ingin mencari tahu apakah saya dapat mengkonfigurasi Apache untuk menulis ulang 302 redirect URL untuk mengirim pengguna ke https.
Ini adalah konfigurasi yang saya miliki sejauh ini di https.conf Apache:
ProxyPreserveHost on
RewriteEngine on
RewriteRule ^/app$ /app/ [PT]
ProxyPass /app ajp://localhost:8009/app
Saya mencoba menggunakan ProxyPassReverse , tetapi belum dapat menemukan cara memaksanya untuk menulis ulang 302 redirect URL dengan https alih-alih http.
Adakah pikiran?
sumber
Saya telah menemukan opsi lain.
Berdasarkan /programming/5741210/handling-x-forwarded-proto-in-java-apache-tomcat dan Apache ReverseProxyPass mengalihkan ke http daripada https tampaknya beberapa server mengenali header X-Forwarded-Protocol . Seseorang dapat membuat Tomcat mengenalinya dengan menambahkan:
untuk
server.xml
.sumber
X-Forwarded-Proto
.