


NGINX dengan Node.js: Pengimbangan Beban, Menyajikan Kandungan Statik dan SSL
NGINX ialah pelayan web yang berkuasa dan serba boleh yang memainkan peranan penting dalam menskalakan aplikasi Node.js. Ia biasanya digunakan sebagai proksi terbalik untuk mengendalikan pengimbangan beban, menyampaikan kandungan statik dan mengurus penamatan SSL. Dalam artikel ini, kami akan meneroka cara menggunakan NGINX bersama Node.js, menerangkan cara setiap fungsi ini berfungsi dengan contoh praktikal.
Mengapa Menggunakan NGINX dengan Node.js?
Walaupun Node.js cemerlang dalam membina aplikasi berskala, didorong peristiwa, ini mungkin bukan cara yang paling berkesan untuk mengendalikan tugas seperti pengimbangan beban, menyajikan kandungan statik atau penamatan SSL. Di sinilah NGINX masuk. NGINX dioptimumkan untuk mengendalikan sejumlah besar sambungan serentak dengan cekap, menjadikannya teman yang sempurna untuk aplikasi Node.js yang perlu skala.
Faedah Utama Menggunakan NGINX dengan Node.js:
- Pengimbangan Beban: NGINX boleh mengagihkan trafik merentasi berbilang kejadian Node.js, memastikan tiada pelayan tunggal yang terharu.
- Menyajikan Kandungan Statik: Ia menyediakan fail statik dengan cekap (cth. CSS, JS, imej), membebaskan Node.js untuk memfokus pada kandungan dinamik.
- Penamatan SSL: NGINX mengendalikan penyulitan dan penyahsulitan SSL/TLS, mengurangkan beban pada Node.js.
1. Pengimbangan Beban dengan NGINX
Apabila menskala secara mendatar, anda perlu menjalankan berbilang tika aplikasi Node.js anda. NGINX boleh mengagihkan trafik masuk merentas kejadian ini, memastikan beban yang sekata.
Langkah 1: Pasang NGINX
Pada sistem Ubuntu, anda boleh memasang NGINX dengan arahan berikut:
sudo apt update sudo apt install nginx
Langkah 2: Konfigurasi NGINX untuk Pengimbangan Beban
Fail nginx.conf ialah tempat anda menentukan cara NGINX mengendalikan permintaan masuk. Begini cara anda boleh menyediakan NGINX untuk memuatkan baki merentas tiga tika Node.js.
http { upstream node_app { server 127.0.0.1:3000; server 127.0.0.1:3001; server 127.0.0.1:3002; } server { listen 80; location / { proxy_pass http://node_app; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } }
Penjelasan:
- Blok hulu mentakrifkan kumpulan kejadian Node.js yang NGINX akan mengimbangi trafik antara.
- Arahan proxy_pass memajukan permintaan kepada salah satu kejadian Node.js.
Langkah 3: Mulakan Berbilang Contoh Node.js
node app.js --port 3000 & node app.js --port 3001 & node app.js --port 3002 &
Langkah 4: Mulakan NGINX
Setelah NGINX dikonfigurasikan, mulakannya menggunakan:
sudo systemctl start nginx
Uji Persediaan:
Sekarang, melawati alamat IP atau domain pelayan anda harus mengedarkan permintaan antara tiga contoh Node.js.
2. Menyediakan Kandungan Statik dengan NGINX
Aplikasi Node.js selalunya perlu menyediakan fail statik (seperti imej, CSS dan JavaScript). NGINX jauh lebih cekap dalam tugas ini, kerana ia direka bentuk untuk mengendalikan sejumlah besar permintaan fail statik.
Langkah 1: Konfigurasi NGINX untuk Fail Statik
Ubah suai fail nginx.conf untuk menentukan lokasi kandungan statik.
server { listen 80; # Serve static content directly location /static/ { root /var/www/html; } # Proxy dynamic requests to Node.js location / { proxy_pass http://localhost:3000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } }
Penjelasan:
- Lokasi /static/ blok memberitahu NGINX untuk menyampaikan fail daripada /var/www/html/static/ apabila permintaan dibuat kepada /static/.
- Permintaan lain diproksikan ke aplikasi Node.js.
Langkah 2: Alihkan Fail Statik
Alihkan fail statik anda (cth., imej, CSS, JavaScript) ke direktori /var/www/html/static/.
sudo mkdir -p /var/www/html/static sudo cp -r path/to/static/files/* /var/www/html/static/
Kini, permintaan untuk sumber /statik akan dikendalikan secara langsung oleh NGINX, meningkatkan prestasi pelayan Node.js anda.
3. Penamatan SSL dengan NGINX
SSL (Lapisan Soket Selamat) adalah penting untuk menjamin komunikasi antara pengguna anda dan aplikasi anda. NGINX boleh memuat naik permintaan penamatan, penyulitan dan penyahsulitan SSL, jadi aplikasi Node.js anda tidak perlu mengendalikan SSL sendiri.
Langkah 1: Dapatkan Sijil SSL
Anda boleh mendapatkan sijil SSL secara percuma menggunakan Let’s Encrypt:
sudo apt install certbot python3-certbot-nginx sudo certbot --nginx -d yourdomain.com
Langkah 2: Konfigurasi SSL NGINX
Setelah sijil SSL dikeluarkan, anda boleh mengkonfigurasi NGINX untuk mengendalikan trafik SSL.
server { listen 80; server_name yourdomain.com; return 301 https://$server_name$request_uri; } server { listen 443 ssl; server_name yourdomain.com; ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem; location / { proxy_pass http://localhost:3000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } }
Penjelasan:
- Blok pelayan pertama mengubah hala semua trafik HTTP ke HTTPS.
- Blok kedua mendengar pada port 443 (HTTPS), mengendalikan penyulitan SSL dengan sijil yang dikeluarkan oleh Let’s Encrypt.
Langkah 3: Uji Persediaan SSL
Lawati domain anda (cth., https://yourdomain.com) dan apl Node.js anda kini harus disediakan melalui HTTPS.
Konfigurasi NGINX Tambahan untuk Mengoptimumkan Node.js
1. Mengendalikan Tamat Masa
Untuk mengelakkan permintaan yang berjalan lama daripada ditutup sebelum waktunya, konfigurasikan tetapan tamat masa NGINX.
server { proxy_read_timeout 90s; proxy_send_timeout 90s; send_timeout 90s; }
2. Rate Limiting
Rate limiting can help prevent abuse and manage high traffic by limiting the number of requests a user can make in a given time.
http { limit_req_zone $binary_remote_addr zone=mylimit:10m rate=1r/s; server { location / { limit_req zone=mylimit burst=5; proxy_pass http://localhost:3000; } } }
Explanation:
- The limit_req_zone directive defines a rate limit of 1 request per second.
- The burst parameter allows a small number of requests to exceed the limit before throttling kicks in.
Conclusion
NGINX is a powerful tool that can significantly enhance the performance, security, and scalability of your Node.js applications. By offloading tasks such as load balancing, serving static content, and handling SSL termination to NGINX, your Node.js server can focus on what it does best: processing dynamic content and handling real-time events.
Atas ialah kandungan terperinci NGINX dengan Node.js: Pengimbangan Beban, Menyajikan Kandungan Statik dan SSL. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Artikel membincangkan membuat, menerbitkan, dan mengekalkan perpustakaan JavaScript, memberi tumpuan kepada perancangan, pembangunan, ujian, dokumentasi, dan strategi promosi.

Artikel ini membincangkan strategi untuk mengoptimumkan prestasi JavaScript dalam pelayar, memberi tumpuan kepada mengurangkan masa pelaksanaan dan meminimumkan kesan pada kelajuan beban halaman.

Soalan dan penyelesaian yang sering ditanya untuk percetakan tiket kertas terma depan dalam pembangunan front-end, percetakan tiket adalah keperluan umum. Walau bagaimanapun, banyak pemaju sedang melaksanakan ...

Artikel ini membincangkan debugging JavaScript yang berkesan menggunakan alat pemaju pelayar, memberi tumpuan kepada menetapkan titik putus, menggunakan konsol, dan menganalisis prestasi.

Tidak ada gaji mutlak untuk pemaju Python dan JavaScript, bergantung kepada kemahiran dan keperluan industri. 1. Python boleh dibayar lebih banyak dalam sains data dan pembelajaran mesin. 2. JavaScript mempunyai permintaan yang besar dalam perkembangan depan dan stack penuh, dan gajinya juga cukup besar. 3. Faktor mempengaruhi termasuk pengalaman, lokasi geografi, saiz syarikat dan kemahiran khusus.

Artikel ini menerangkan cara menggunakan peta sumber untuk debug JavaScript minifikasi dengan memetakannya kembali ke kod asal. Ia membincangkan membolehkan peta sumber, menetapkan titik putus, dan menggunakan alat seperti Chrome Devtools dan Webpack.

Bagaimana cara menggabungkan elemen array dengan ID yang sama ke dalam satu objek dalam JavaScript? Semasa memproses data, kita sering menghadapi keperluan untuk mempunyai id yang sama ...

Perbincangan mendalam mengenai punca-punca utama perbezaan dalam output konsol.log. Artikel ini akan menganalisis perbezaan hasil output fungsi Console.log dalam sekeping kod dan menerangkan sebab -sebab di belakangnya. � ...
