Rumah Operasi dan penyelenggaraan Nginx Bagaimana nginx+iis melaksanakan pengimbangan beban mudah

Bagaimana nginx+iis melaksanakan pengimbangan beban mudah

May 20, 2023 am 09:43 AM
nginx iis

1. pemasangan nginx

nginx ialah pelayan web ringan/pelayan proksi terbalik dan pelayan proksi e-mel (imap/pop3), dan dipasang dalam bsd- Diterbitkan di bawah seumpamanya perjanjian. Ia dibangunkan oleh pengaturcara Rusia igor sysoev dan digunakan oleh Rambler (Bahasa Rusia: рамблер), sebuah laman web portal dan enjin carian Rusia yang besar. Ciri-cirinya ialah ia menduduki memori yang kurang dan mempunyai keupayaan konkurensi yang kuat Malah, keupayaan konkurensi nginx berprestasi lebih baik di kalangan pelayan web jenis yang sama. Pengguna tapak web nginx di tanah besar China termasuk: Baidu, Sina, NetEase, Tencent, dll.

Versi terkini nginx ialah 1.9.3 Yang saya muat turun ialah versi tetingkap Secara amnya, senario sebenar adalah untuk memasangnya di bawah sistem Linux, saya akan tidak memperkenalkannya di sini. Alamat muat turun rasmi:. Selepas muat turun selesai, nyahzip dan jalankan nginx.exe untuk memulakan nginx Selepas memulakan, anda akan melihat nginx dalam proses.

Bagaimana nginx+iis melaksanakan pengimbangan beban mudah

Untuk mencapai pengimbangan beban, anda perlu mengubah suai maklumat konfigurasi conf/nginx.conf Selepas mengubah suai maklumat konfigurasi, mulakan semula perkhidmatan nginx Ini boleh dicapai melalui perintah muat semula nginx -s. Di sini kami menggunakan proses batch yang disediakan oleh semut untuk beroperasi.

Bagaimana nginx+iis melaksanakan pengimbangan beban mudah

Letakkan fail nginx.bat ke dalam folder yang sama seperti nginx.exe dan jalankan terus. Semua fail yang digunakan dalam artikel ini akan disediakan pada penghujung artikel.

Bagaimana nginx+iis melaksanakan pengimbangan beban mudah

2. Pembinaan dan konfigurasi tapak

1 Bina dua tapak iis

Hanya ada satu di bawah laman web Halaman indeks ringkas yang digunakan untuk mengeluarkan maklumat pelayan semasa. Memandangkan saya tidak mempunyai dua mesin, saya menggunakan kedua-dua tapak ke mesin ini dan port terikat 8082 dan 9000 masing-masing.

 protected void page_load(object sender, eventargs e)
 {
  label0.text = "请求开始时间:"+datetime.now.tostring("yyyy-mm-dd hh:mm:ss");
  label1.text = "服务器名称:" + server.machinename;//服务器名称 
  label2.text = "服务器ip地址:" + request.servervariables["local_addr"];//服务器ip地址 
  label3.text = "http访问端口:" + request.servervariables["server_port"];//http访问端口"
  label4.text = ".net解释引擎版本:" + ".net clr" + environment.version.major + "." + environment.version.minor + "." + environment.version.build + "." + environment.version.revision;//.net解释引擎版本 
  label5.text = "服务器操作系统版本:" + environment.osversion.tostring();//服务器操作系统版本 
  label6.text = "服务器iis版本:" + request.servervariables["server_software"];//服务器iis版本 
  label7.text = "服务器域名:" + request.servervariables["server_name"];//服务器域名 
  label8.text = "虚拟目录的绝对路径:" + request.servervariables["appl_rhysical_path"];//虚拟目录的绝对路径 
  label9.text = "执行文件的绝对路径:" + request.servervariables["path_translated"];//执行文件的绝对路径 
  label10.text = "虚拟目录session总数:" + session.contents.count.tostring();//虚拟目录session总数 
  label11.text = "虚拟目录application总数:" + application.contents.count.tostring();//虚拟目录application总数 
  label12.text = "域名主机:" + request.servervariables["http_host"];//域名主机 
  label13.text = "服务器区域语言:" + request.servervariables["http_accept_language"];//服务器区域语言 
  label14.text = "用户信息:" + request.servervariables["http_user_agent"];
  label14.text = "cpu个数:" + environment.getenvironmentvariable("number_of_processors");//cpu个数 
  label15.text = "cpu类型:" + environment.getenvironmentvariable("processor_identifier");//cpu类型 
  label16.text = "请求来源地址:" + request.headers["x-real-ip"];
 }
Salin selepas log masuk

2. Ubah suai maklumat konfigurasi nginx

Ubah suai port mendengar nginx dan ubah suai nilai nod dengar di bawah pelayan http Memandangkan port 80 mesin ini telah diduduki, saya menukarnya kepada mendengar port 8083.

dengar 8083;

Tambah huluan (kluster pelayan) di bawah nod http Tetapan pelayan adalah maklumat pelayan kelompok Saya telah membina dua tapak di sini dan mengkonfigurasi dua maklumat.

 #服务器集群名称为jq_one
 upstream jq_one {
   server 127.0.0.1:9000; 
   server 127.0.0.1:8082; 
 }
Salin selepas log masuk

Cari nod lokasi di bawah nod http dan ubah suainya

location / {
  root html;
  index index.aspx index.html index.htm; #修改主页为index.aspx
 #其中jq_one 对应着upstream设置的集群名称
 proxy_pass  http://jq_one; 
 #设置主机头和客户端真实地址,以便服务器获取客户端真实ip
 proxy_set_header host  $host; 
 proxy_set_header x-real-ip $remote_addr; 
 proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for;
 }
Salin selepas log masuk

Ingat untuk memulakan semula perkhidmatan nginx selepas mengubah suai fail konfigurasi Maklumat fail konfigurasi lengkap terakhir adalah seperti berikut

3. Hasil berjalan

Lawati http://127.0.0.1:8083/index.aspx, lawatinya beberapa kali dan fokus pada bahagian yang ditandakan dengan warna merah.

Bagaimana nginx+iis melaksanakan pengimbangan beban mudah

Bagaimana nginx+iis melaksanakan pengimbangan beban mudah

Seperti yang anda lihat, permintaan kami diedarkan ke tapak 8082 dan tapak 9000, dan kali pertama ialah tapak 8082 dan kali kedua 9000. Keputusan sedemikian membuktikan bahawa persediaan pengimbangan beban kami berjaya. Cuba tutup 9000 tapak, dan kemudian muat semula halaman dan ketahui bahawa port http keluaran sentiasa 8082, yang bermaksud bahawa salah satu tapak itu tidak berfungsi Selagi masih ada tapak yang baik, tapak kami masih boleh berkhidmat.

4. Analisis Masalah

Walaupun kami telah membina tapak pengimbangan beban, masih terdapat masalah berikut.

1. Jika tapak menggunakan sesi dan permintaan diedarkan secara sama rata ke dua tapak, maka mesti ada masalah perkongsian sesi.

Gunakan pangkalan data untuk menyimpan maklumat sesi
Gunakan nginx untuk memperuntukkan permintaan daripada IP yang sama kepada pelayan tetap, ubah suai seperti berikut. ip_hash akan mengira nilai cincang yang sepadan dengan ip, dan kemudian menetapkannya kepada pelayan tetap

  upstream jq_one{
   server 127.0.0.1:8082 ;
    server 127.0.0.1:9000 ;
   ip_hash;
  }
Salin selepas log masuk

untuk membina pelayan redis, dan sesi akan dibaca daripada pelayan redis. Artikel berikut akan memperkenalkan penggunaan redis cache yang diedarkan
2. Bagaimanakah pentadbir mengemas kini fail tapak sekarang Anda boleh mengemas kini fail secara manual kepada dua pelayan, maka Manual operasi pastinya tidak dapat dilaksanakan

Kemas kini tapak berbilang pelayan boleh menggunakan program penyegerakan fail goodsync, yang akan mengesan pengubahsuaian dan penambahan fail secara automatik, dan kemudian menyegerakkan ke pelayan lain. Anda boleh menggunakan rsync di bawah Linux
3. Fungsi muat naik fail dalam tapak akan mengedarkan fail ke pelayan yang berbeza Bagaimana untuk menyelesaikan masalah perkongsian fail.

Gunakan pelayan fail untuk menyimpan semua fail pada pelayan ini dan operasi fail, membaca dan menulis semuanya ada pada pelayan ini. Terdapat juga masalah di sini, pelayan fail mempunyai had atas baca dan tulis.
4. Pelayan dengan konfigurasi beban berbeza Ada yang tinggi dan ada yang rendah Bolehkah pelayan dengan konfigurasi yang lebih tinggi mengendalikan lebih banyak permintaan

Ada beberapa algoritma untuk memuatkan pengimbangan: kaedah putaran, kaedah berselerak Kaedah lajur, kaedah sambungan paling sedikit, kaedah paling kurang hilang, kaedah tindak balas terpantas, kaedah wajaran. Kita boleh menggunakan kaedah pemberat di sini untuk mengedarkan permintaan.

 upstream jq_one{
   server 127.0.0.1:8082 weight=4;
    server 127.0.0.1:9000 weight=1;
  }
Salin selepas log masuk

通过weight设置每台服务器分配请求站的权重,值越高分配的越多。

5.由于请求是经过nginx转发过来的,可以在代码里面获取到用户请求的实际ip地址吗?

答案是肯定的,在localtion节点设置如下请求头信息

 #设置主机头和客户端真实地址,以便服务器获取客户端真实ip
 proxy_set_header host  $host; 
 proxy_set_header x-real-ip $remote_addr; 
 proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for;
Salin selepas log masuk

代码里面通过request.headers["x-real-ip"],就能获取到真实ip

6.nginx实现静态文件(image,js,css)缓存

在server节点下添加新的localtion

 #静态资源缓存设置
 location ~ \.(jpg|png|jpeg|bmp|gif|swf|css)$
 { 
  expires 30d;
  root /nginx-1.9.3/html;#root: #静态文件存在地址,这里设置在/nginx-1.9.3/html下
  break;
 }
Salin selepas log masuk

    这是index页面的代码

  • Bagaimana nginx+iis melaksanakan pengimbangan beban mudah
  • Atas ialah kandungan terperinci Bagaimana nginx+iis melaksanakan pengimbangan beban mudah. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

    Kenyataan Laman Web ini
    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

    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

    Notepad++7.3.1

    Notepad++7.3.1

    Editor kod yang mudah digunakan dan percuma

    SublimeText3 versi Cina

    SublimeText3 versi Cina

    Versi Cina, sangat mudah digunakan

    Hantar Studio 13.0.1

    Hantar Studio 13.0.1

    Persekitaran pembangunan bersepadu PHP yang berkuasa

    Dreamweaver CS6

    Dreamweaver CS6

    Alat pembangunan web visual

    SublimeText3 versi Mac

    SublimeText3 versi Mac

    Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

    Cara memeriksa versi nginx Cara memeriksa versi nginx Apr 14, 2025 am 11:57 AM

    Kaedah yang boleh menanyakan versi nginx adalah: gunakan perintah nginx -v; Lihat arahan versi dalam fail nginx.conf; Buka halaman ralat Nginx dan lihat tajuk halaman.

    Cara mengkonfigurasi nama domain pelayan awan di nginx Cara mengkonfigurasi nama domain pelayan awan di nginx Apr 14, 2025 pm 12:18 PM

    Cara mengkonfigurasi nama domain Nginx pada pelayan awan: Buat rekod yang menunjuk ke alamat IP awam pelayan awan. Tambah blok hos maya dalam fail konfigurasi Nginx, menyatakan port pendengaran, nama domain, dan direktori akar laman web. Mulakan semula nginx untuk memohon perubahan. Akses konfigurasi ujian nama domain. Nota Lain: Pasang sijil SSL untuk membolehkan HTTPS, pastikan firewall membenarkan trafik port 80, dan tunggu resolusi DNS berkuatkuasa.

    Cara memeriksa sama ada nginx dimulakan Cara memeriksa sama ada nginx dimulakan Apr 14, 2025 pm 01:03 PM

    Bagaimana untuk mengesahkan sama ada nginx dimulakan: 1. Gunakan baris arahan: status sistem sistem nginx (linux/unix), netstat -ano | Findstr 80 (Windows); 2. Periksa sama ada port 80 dibuka; 3. Semak mesej permulaan Nginx dalam log sistem; 4. Gunakan alat pihak ketiga, seperti Nagios, Zabbix, dan Icinga.

    Cara Mengkonfigurasi Nginx di Windows Cara Mengkonfigurasi Nginx di Windows Apr 14, 2025 pm 12:57 PM

    Bagaimana cara mengkonfigurasi nginx di Windows? Pasang Nginx dan buat konfigurasi hos maya. Ubah suai fail konfigurasi utama dan sertakan konfigurasi hos maya. Mulakan atau Muat semula Nginx. Uji konfigurasi dan lihat laman web. Selektif membolehkan SSL dan mengkonfigurasi sijil SSL. Selektif tetapkan firewall untuk membolehkan trafik port 80 dan 443.

    Cara memeriksa nama bekas Docker Cara memeriksa nama bekas Docker Apr 15, 2025 pm 12:21 PM

    Anda boleh menanyakan nama kontena Docker dengan mengikuti langkah -langkah: Senaraikan semua bekas (Docker PS). Tapis senarai kontena (menggunakan arahan grep). Mendapat nama kontena (terletak di lajur "Nama").

    Cara memulakan pelayan nginx Cara memulakan pelayan nginx Apr 14, 2025 pm 12:27 PM

    Memulakan pelayan Nginx memerlukan langkah-langkah yang berbeza mengikut sistem operasi yang berbeza: Sistem Linux/Unix: Pasang pakej Nginx (contohnya, menggunakan apt-get atau yum). Gunakan SystemCTL untuk memulakan perkhidmatan Nginx (contohnya, SUDO SystemCTL Mula Nginx). Sistem Windows: Muat turun dan pasang fail binari Windows. Mula Nginx menggunakan nginx.exe executable (contohnya, nginx.exe -c conf \ nginx.conf). Tidak kira sistem operasi yang anda gunakan, anda boleh mengakses IP pelayan

    Cara membuat bekas untuk Docker Cara membuat bekas untuk Docker Apr 15, 2025 pm 12:18 PM

    Buat bekas di Docker: 1. Tarik Imej: Docker Pull [Nama Cermin] 2. Buat bekas: Docker Run [Options] [Mirror Name] [Command] 3. Mulailah bekas: Docker Start [Nama Container]

    Cara Memulakan Bekas oleh Docker Cara Memulakan Bekas oleh Docker Apr 15, 2025 pm 12:27 PM

    Docker Container Startup Langkah: Tarik Imej Bekas: Run "Docker Pull [Mirror Name]". Buat bekas: Gunakan "Docker Buat [Pilihan] [Nama Mirror] [Perintah dan Parameter]". Mulakan bekas: Jalankan "Docker Start [Nama Container atau ID]". Semak Status Kontena: Sahkan bahawa bekas sedang berjalan dengan "Docker PS".

    See all articles