Untuk mengkonfigurasi Apache untuk bekerja dengan Node.js menggunakan mod_proxy
, anda perlu bertindak sebagai proksi terbalik, mengarahkan permintaan ke aplikasi Node.js anda yang berjalan pada port berasingan. Ini melibatkan beberapa langkah:
mod_proxy
dan mod_proxy_http
diaktifkan: Semak konfigurasi Apache anda (biasanya terletak di /etc/apache2/mods-available/
atau direktori yang sama). Jika fail proxy.load
dan proxy_http.load
wujud, anda perlu membolehkannya dengan membuat pautan simbolik dalam /etc/apache2/mods-enabled/
(atau setara). Ini sering melibatkan menggunakan arahan seperti a2enmod proxy
dan a2enmod proxy_http
diikuti oleh systemctl restart apache2
(atau perintah mulakan semula perkhidmatan yang sesuai untuk sistem anda)./etc/apache2/sites-available/your_site.conf
), anda akan menentukan blok <virtualhost></virtualhost>
. Blok ini menentukan bagaimana Apache mengendalikan permintaan untuk aplikasi Node.js anda. Konfigurasi sampel mungkin kelihatan seperti ini:<code class="apache"><virtualhost> ServerName yourdomain.com ServerAlias www.yourdomain.com ProxyPreserveHost On ProxyPass / http://localhost:3000/ # Replace 3000 with your Node.js app's port ProxyPassReverse / http://localhost:3000/ <proxy> Order deny,allow Allow from all </proxy> </virtualhost></code>
systemctl restart apache2
. Konfigurasi ini mengarahkan semua permintaan kepada /
(dan subpaths) ke aplikasi Node.js anda yang dijalankan pada localhost:3000
. ProxyPreserveHost On
memastikan bahawa pengepala tuan rumah asal dipelihara, yang penting untuk aplikasi yang bergantung padanya. ProxyPassReverse
mengemas kini URL dalam respons untuk mencerminkan nama domain yang betul.
Beberapa perangkap biasa boleh berlaku apabila menubuhkan proksi terbalik Apache untuk aplikasi Node.js:
ProxyPass
sepadan dengan port aplikasi Node.js anda sebenarnya sedang didengarkan. Kesalahan akan membawa kepada kesilapan sambungan.mod_proxy
dan mod_proxy_http
diaktifkan dengan betul dan dimuatkan oleh Apache. Kegagalan berbuat demikian akan mengakibatkan kesilapan.ProxyPass
dan ProxyPassReverse
anda adalah tepat. Laluan yang salah boleh menyebabkan 404 kesilapan. mod_proxy
sendiri tidak secara langsung meningkatkan prestasi aplikasi Node.js anda. Peranan utamanya adalah bertindak sebagai proksi terbalik, tugas pengendalian seperti mengimbangi beban (dengan pelbagai contoh node.js), penamatan SSL (penyulitan SSL dari aplikasi Node.js anda), dan berpotensi caching aset statik (walaupun mekanisme caching yang berdedikasi sering lebih baik). Walau bagaimanapun, keuntungan prestasi tidak langsung mungkin:
mod_proxy
dapat mengedarkan beban, meningkatkan respons dan mencegah beban pada pelayan individu. Walau bagaimanapun, ini memerlukan konfigurasi yang lebih canggih dan alat tambahan yang berpotensi.mod_proxy
boleh mengendalikan beberapa caching, penyelesaian caching khusus (seperti varnis atau nginx) biasanya memberikan prestasi yang lebih baik untuk aset statik.Mengendalikan persekitaran yang berbeza memerlukan menguruskan fail konfigurasi Apache yang berasingan untuk setiap persekitaran. Elakkan butiran spesifik persekitaran hardcoding (seperti nama pelayan dan port) secara langsung dalam fail konfigurasi anda. Sebaliknya, gunakan pembolehubah persekitaran atau fail konfigurasi untuk menguruskan tetapan ini.
Inilah pendekatan yang dicadangkan:
development.conf
, staging.conf
, production.conf
).SetEnv
Apache. Contohnya:<code class="apache">SetEnv NODE_APP_URL "http://localhost:3000" # For development ProxyPass / ${NODE_APP_URL}/ ProxyPassReverse / ${NODE_APP_URL}/</code>
development.ini
, staging.ini
, production.ini
) dan gunakan Include
Apache untuk memuatkan fail yang sesuai berdasarkan persekitaran.sites-enabled
di mana anda menghubungkan ke development.conf
, staging.conf
, atau production.conf
bergantung kepada alam sekitar.Pendekatan ini membolehkan anda dengan mudah menukar antara persekitaran tanpa mengubah suai fail konfigurasi Apache utama anda dan mengurangkan risiko kesilapan. Ingatlah untuk sentiasa memulakan semula Apache selepas membuat sebarang perubahan konfigurasi.
Atas ialah kandungan terperinci Bagaimana saya mengkonfigurasi Apache untuk bekerja dengan node.js menggunakan mod_proxy?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!