Saya mencoba proksi subdirektori ke server lain. Httpd.conf saya:
RewriteEngine On
ProxyPreserveHost On
RewriteRule .*subdir/ https://anotherserver/subdir/ [P]
Masalahnya adalah bahwa Apache selalu mencatat ini:
AH01144: No protocol handler was valid for the URL /subdir/. If you are using a DSO version of mod_proxy, make sure the proxy submodules are included in the configuration using LoadModule., referer: http://localhost/
Jadi setelah mencari di internet, saya telah mengaktifkan modul-modul ini:
LoadModule headers_module modules/mod_headers.so
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_express_module modules/mod_proxy_express.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule proxy_html_module modules/mod_proxy_html.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_scgi_module modules/mod_proxy_scgi.so
LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so
LoadModule rewrite_module modules/mod_rewrite.so
(Saya tahu bahwa saya tidak membutuhkan semuanya tetapi saya hanya mengaktifkannya untuk memastikan saya tidak melewatkannya)
Tetapi kesalahan ini masih muncul dan klien mendapatkan HTTP 500.
Bagaimana saya bisa memperbaikinya?
mod_ssl
danSSLProxyEngine
denganProxyPass
Jawaban:
Ini bisa terjadi jika Anda belum
mod_proxy_http
mengaktifkansudo a2enmod proxy_http
Agar saya dapat menjalankan load balancer berbasis https, saya harus mengaktifkan yang berikut:
sumber
LoadModule ssl_module modules/mod_ssl.so
. Saya juga harus menggunakanSSLProxyEngine on
.mod_slotmem_shm
LoadModule slotmem_shm_module modules/mod_slotmem_shm.so
di httpd.confsudo a2enmod proxy_connect
, yaitu untuk tunnel https menggunakan CONNECTAgar instalasi Apache2.4 + php5-fpm saya mulai berfungsi, saya perlu mengaktifkan modul Apache berikut:
Tidak perlu
proxy_http
, dan inilah yang mengirim semua.php
file langsung ke php5-fpm:sumber
Dalam kasus saya, saya membutuhkan
proxy_ajp
modul.sumber
Ini terjadi pada saya di pengaturan Apache / 2.4.18 (Ubuntu) saya. Dalam kasus saya, kesalahan yang saya lihat adalah:
Konfigurasi yang terkait dengan ini adalah:
"
No protocol handler was valid for the URL /~socket.io/
" Berarti Apache tidak bisa menangani permintaan yang dikirim ke "ws://127.0.0.1:8090/~socket.io/
"Saya telah
proxy_http
memuat, tetapi juga diperlukanproxy_wstunnel
. Setelah itu diaktifkan, semuanya baik-baik saja.sumber
Untuk memperjelas referensi di masa mendatang, a2enmod, seperti yang disarankan dalam beberapa jawaban di atas, adalah untuk Debian / Ubuntu. Red Hat tidak menggunakan ini untuk mengaktifkan modul Apache - melainkan menggunakan pernyataan LoadModule di httpd.conf.
Lebih lanjut di sini: /server/56394/how-do-i-enable-apache-modules-from-the-command-line-in-redhat
Resolusi / jawaban yang benar ada di komentar di OP:
Saya pikir Anda perlu mod_ssl dan SSLProxyEngine dengan ProxyPass - Deadooshka 29 Mei 14 jam 11:35
@Deadooshka Ya, ini berfungsi. Jika Anda memposting ini sebagai jawaban, saya dapat menerimanya - das_j 29 Mei 14 jam 12:04
sumber
Saya memposting jawaban di sini, karena saya memiliki pesan kesalahan yang sama karena alasan yang berbeda.
Pesan kesalahan ini dapat terjadi, misalnya, jika Anda menggunakan apache httpd untuk meminta proksi dari sumber pada protokol A untuk menargetkan pada protokol B.
Inilah contoh situasi saya:
Dalam kasus di atas, apa yang terjadi hanyalah sebagai berikut. Saya telah mengaktifkan mod proxy ke permintaan websocket proksi ke nodejs berdasarkan path / sockjs-node.
Masalahnya adalah node tidak menggunakan path / sockjs-node untuk permintaan websocket secara eksklusif. Ini juga menggunakan jalur ini untuk meng-hosting titik masuk REST yang memberikan informasi tentang soket web.
Dengan cara ini, ketika aplikasi akan mencoba untuk membuka http: // localhost: 7001 / sockjs-node / info , apache httpd akan mencoba untuk merutekan panggilan sisanya dari protokol HTTP ke panggilan titik akhir Webscoket. Node tidak menerima ini.
Ini mengarah pada pengecualian di atas.
Jadi perhatikan bahwa meskipun Anda mengaktifkan modul yang tepat, jika Anda mencoba melakukan penerusan yang salah, ini akan berakhir dengan apache httpd yang memberi tahu Anda bahwa protokol yang Anda coba gunakan pada server target tidak valid.
sumber
Saya mencoba mendapatkan
uwsgi://
pekerjaan, tetapi entah bagaimana manual itu berpikir bahwa saya benar-benar membutuhkannyamod_proxy_uwsgi
. Bukan itu. Berikut ini cara melakukannya: Bagaimana cara mengkompilasi mod_proxy_uwsgi atau mod_uwsgi?sumber
Bagi saya semua jawaban yang disebutkan di atas diaktifkan pada xampp masih tidak berfungsi. Mengaktifkan modul di bawah ini membuat host virtual bekerja kembali
sumber