cari
Rumahhujung hadapan webtutorial jsNGINX dengan Node.js: Pengimbangan Beban, Menyajikan Kandungan Statik dan SSL

NGINX with Node.js: Load Balancing, Serving Static Content, and 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:

  1. Pengimbangan Beban: NGINX boleh mengagihkan trafik merentasi berbilang kejadian Node.js, memastikan tiada pelayan tunggal yang terharu.
  2. Menyajikan Kandungan Statik: Ia menyediakan fail statik dengan cekap (cth. CSS, JS, imej), membebaskan Node.js untuk memfokus pada kandungan dinamik.
  3. 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!

Kenyataan
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Python vs JavaScript: Bahasa mana yang harus anda pelajari?Python vs JavaScript: Bahasa mana yang harus anda pelajari?May 03, 2025 am 12:10 AM

Memilih Python atau JavaScript harus berdasarkan perkembangan kerjaya, keluk pembelajaran dan ekosistem: 1) Pembangunan Kerjaya: Python sesuai untuk sains data dan pembangunan back-end, sementara JavaScript sesuai untuk pembangunan depan dan penuh. 2) Kurva Pembelajaran: Sintaks Python adalah ringkas dan sesuai untuk pemula; Sintaks JavaScript adalah fleksibel. 3) Ekosistem: Python mempunyai perpustakaan pengkomputeran saintifik yang kaya, dan JavaScript mempunyai rangka kerja front-end yang kuat.

Rangka Kerja JavaScript: Menguasai Pembangunan Web ModenRangka Kerja JavaScript: Menguasai Pembangunan Web ModenMay 02, 2025 am 12:04 AM

Kuasa rangka kerja JavaScript terletak pada pembangunan yang memudahkan, meningkatkan pengalaman pengguna dan prestasi aplikasi. Apabila memilih rangka kerja, pertimbangkan: 1.

Hubungan antara JavaScript, C, dan penyemak imbasHubungan antara JavaScript, C, dan penyemak imbasMay 01, 2025 am 12:06 AM

Pengenalan Saya tahu anda mungkin merasa pelik, apa sebenarnya yang perlu dilakukan oleh JavaScript, C dan penyemak imbas? Mereka seolah -olah tidak berkaitan, tetapi sebenarnya, mereka memainkan peranan yang sangat penting dalam pembangunan web moden. Hari ini kita akan membincangkan hubungan rapat antara ketiga -tiga ini. Melalui artikel ini, anda akan mempelajari bagaimana JavaScript berjalan dalam penyemak imbas, peranan C dalam enjin pelayar, dan bagaimana mereka bekerjasama untuk memacu rendering dan interaksi laman web. Kita semua tahu hubungan antara JavaScript dan penyemak imbas. JavaScript adalah bahasa utama pembangunan front-end. Ia berjalan secara langsung di penyemak imbas, menjadikan laman web jelas dan menarik. Adakah anda pernah tertanya -tanya mengapa Javascr

Aliran node.js dengan typescriptAliran node.js dengan typescriptApr 30, 2025 am 08:22 AM

Node.js cemerlang pada I/O yang cekap, sebahagian besarnya terima kasih kepada aliran. Aliran memproses data secara berperingkat, mengelakkan beban memori-ideal untuk fail besar, tugas rangkaian, dan aplikasi masa nyata. Menggabungkan sungai dengan keselamatan jenis typescript mencipta powe

Python vs JavaScript: Pertimbangan Prestasi dan KecekapanPython vs JavaScript: Pertimbangan Prestasi dan KecekapanApr 30, 2025 am 12:08 AM

Perbezaan prestasi dan kecekapan antara Python dan JavaScript terutamanya dicerminkan dalam: 1) sebagai bahasa yang ditafsirkan, Python berjalan perlahan tetapi mempunyai kecekapan pembangunan yang tinggi dan sesuai untuk pembangunan prototaip pesat; 2) JavaScript adalah terhad kepada benang tunggal dalam penyemak imbas, tetapi I/O multi-threading dan asynchronous boleh digunakan untuk meningkatkan prestasi dalam node.js, dan kedua-duanya mempunyai kelebihan dalam projek sebenar.

Asal JavaScript: Meneroka Bahasa PelaksanaannyaAsal JavaScript: Meneroka Bahasa PelaksanaannyaApr 29, 2025 am 12:51 AM

JavaScript berasal pada tahun 1995 dan dicipta oleh Brandon Ike, dan menyedari bahasa itu menjadi C. 1.C Language menyediakan keupayaan pengaturcaraan prestasi tinggi dan sistem untuk JavaScript. 2. Pengurusan memori JavaScript dan pengoptimuman prestasi bergantung pada bahasa C. 3. Ciri lintas platform bahasa C membantu JavaScript berjalan dengan cekap pada sistem operasi yang berbeza.

Di sebalik tabir: Apa bahasa JavaScript?Di sebalik tabir: Apa bahasa JavaScript?Apr 28, 2025 am 12:01 AM

JavaScript berjalan dalam penyemak imbas dan persekitaran Node.js dan bergantung pada enjin JavaScript untuk menghuraikan dan melaksanakan kod. 1) menjana pokok sintaks abstrak (AST) di peringkat parsing; 2) menukar AST ke bytecode atau kod mesin dalam peringkat penyusunan; 3) Laksanakan kod yang disusun dalam peringkat pelaksanaan.

Masa Depan Python dan JavaScript: Trend dan RamalanMasa Depan Python dan JavaScript: Trend dan RamalanApr 27, 2025 am 12:21 AM

Trend masa depan Python dan JavaScript termasuk: 1. Kedua -duanya akan terus mengembangkan senario aplikasi dalam bidang masing -masing dan membuat lebih banyak penemuan dalam prestasi.

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

MantisBT

MantisBT

Mantis ialah alat pengesan kecacatan berasaskan web yang mudah digunakan yang direka untuk membantu dalam pengesanan kecacatan produk. Ia memerlukan PHP, MySQL dan pelayan web. Lihat perkhidmatan demo dan pengehosan kami.

Versi Mac WebStorm

Versi Mac WebStorm

Alat pembangunan JavaScript yang berguna

SecLists

SecLists

SecLists ialah rakan penguji keselamatan muktamad. Ia ialah koleksi pelbagai jenis senarai yang kerap digunakan semasa penilaian keselamatan, semuanya di satu tempat. SecLists membantu menjadikan ujian keselamatan lebih cekap dan produktif dengan menyediakan semua senarai yang mungkin diperlukan oleh penguji keselamatan dengan mudah. Jenis senarai termasuk nama pengguna, kata laluan, URL, muatan kabur, corak data sensitif, cangkerang web dan banyak lagi. Penguji hanya boleh menarik repositori ini ke mesin ujian baharu dan dia akan mempunyai akses kepada setiap jenis senarai yang dia perlukan.

Penyesuai Pelayan SAP NetWeaver untuk Eclipse

Penyesuai Pelayan SAP NetWeaver untuk Eclipse

Integrasikan Eclipse dengan pelayan aplikasi SAP NetWeaver.

Dreamweaver Mac版

Dreamweaver Mac版

Alat pembangunan web visual