ruby-on-rails - Cara Apache berinteraksi dengan pelayan aplikasi
为情所困
为情所困 2017-05-16 17:03:37
0
3
802

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?

为情所困
为情所困

membalas semua(3)
过去多啦不再A梦

Saya telah melihat soalan ini untuk masa yang lama dan tidak menjawabnya pada masa itu.

Rails datang dengan pelayan webnya sendiri, yang bertanggungjawab untuk mendengar port tertentu untuk menyediakan perkhidmatan.

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.

Apache ialah pelayan http profesional Pada dasarnya, ia hanya boleh bertindak balas kepada fail statik yang paling asas.

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.

Menggunakan Apache dengan Phusion Passenger untuk menggunakan aplikasi Rails adalah terutamanya untuk gesaan ralat yang lebih elegan dan pengendalian ralat automatik (terutamanya memulakan semula), serta sistem pengelogan yang lebih lengkap dan fungsi lanjutan seperti pengimbangan beban.

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 tidak memerlukan pengendalian ralat automatik, menggunakan rel proksi terbalik nginx atau port nipis adalah pilihan terbaik.

洪涛

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

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan