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.
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:
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.
Pada sistem Ubuntu, anda boleh memasang NGINX dengan arahan berikut:
sudo apt update sudo apt install nginx
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:
node app.js --port 3000 & node app.js --port 3001 & node app.js --port 3002 &
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.
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.
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:
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.
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.
Anda boleh mendapatkan sijil SSL secara percuma menggunakan Let’s Encrypt:
sudo apt install certbot python3-certbot-nginx sudo certbot --nginx -d yourdomain.com
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:
Lawati domain anda (cth., https://yourdomain.com) dan apl Node.js anda kini harus disediakan melalui HTTPS.
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; }
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:
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!