Salah satu penyelesaian penggunaan Rails ialah menggunakan Apache sebagai Proksi Terbalik untuk memajukan permintaan ke pelayan aplikasi (seperti Phusion Passenger). Sebagai pelayan proksi terbalik, bagaimanakah Apache berinteraksi dengan pelayan aplikasi di belakangnya?
Contohnya, Apache saya mendengar port 1080 dan menyemak maklumat proses:
> ps aux | grep /MyWebsite/bin/httpd
googly 8353 0.0 0.0 73856 3280 ? Ss Aug26 0:00 /MyWebsite/bin/httpd -d /MyWebsite -f var/state/apache-1080/httpd.conf
googly 8391 0.0 0.0 73856 1828 ? S Aug26 0:00 /MyWebsite/bin/httpd -d /MyWebsite -f var/state/apache-1080/httpd.conf
... # 起了10个进程,并且我知道8353是父进程,其余的是子进程
Apabila permintaan datang, ia akan mula-mula pergi ke Apache Apache akan memperuntukkan proses daripada proses ini untuk mengendalikan permintaan (contohnya, proses 8391 diperuntukkan), jadi apakah yang akan dilakukan oleh proses 8391? Adakah dia akan memajukan permintaan ini kepada pelayan aplikasi berikutnya (Phusion Passenger)? Jika ya, adakah pelayan aplikasi juga mempunyai proses bebasnya sendiri? Atau bolehkah proses 8391 dianggap sebagai proses pelayan aplikasi, dan ia boleh mengendalikan permintaan ini dengan sendirinya?
Bagaimanakah Apache berinteraksi dengan pelayan aplikasi yang tergantung di belakangnya?
Saya telah melihat soalan ini untuk masa yang lama dan tidak menjawabnya pada masa itu.
Bahasa Ruby mempunyai API berkaitan http, malah anda boleh menulis sendiri pelayan fail statik yang ringkas. Dan terdapat banyak permata berkuasa yang menyediakan perkhidmatan yang serupa.
Cara yang paling biasa untuk bahasa PHP dijalankan di bawah Apache adalah sebagai pemalamnya Dalam erti kata lain, Apache ditukar untuk bertindak balas kepada permintaan fail php.
Ia juga mungkin untuk menggunakan pelayan web seperti rel s atau thin untuk memulakan perkhidmatan, tetapi ia tidak begitu mudah untuk digunakan untuk kedua-dua pelayar dan pembangun.
Jika anda mengkonfigurasi proksi terbalik, Apache kemudiannya akan bertindak sebagai klien HTTP untuk menghantar permintaan yang sama kepada pelayan aplikasi, dan kemudian menghantar hasilnya kepada klien sebenar.
Selepas anda memulakan apache, ia akan mempunyai lebih daripada sepuluh atau dua puluh proses (ia bergantung pada konfigurasi anda)
Kemudian selepas apache menerima permintaan, satu proses akan memprosesnya Jika ia memenuhi syarat proksi terbalik, permintaan akan dihantar ke pelayan aplikasi anda
Sebenarnya, pelayan aplikasi sepatutnya boleh diakses secara langsung (melainkan terdapat firewall atau sesuatu)
Bagaimanapun, pelayan aplikasi menerima permintaan dan kemudian menghantar respons kembali kepada apache
apache kemudian menghantar respons kembali ke penyemak imbas
Walau bagaimanapun, semasa proses ini, anda juga mungkin perlu mengkonfigurasi penulisan semula url dalam html dalam respons