Rumah  >  Artikel  >  rangka kerja php  >  Tutorial menggunakan proksi terbalik Nginx dan pengimbangan beban dalam Swoole

Tutorial menggunakan proksi terbalik Nginx dan pengimbangan beban dalam Swoole

PHPz
PHPzasal
2023-06-13 10:47:29928semak imbas

Swoole ialah perpustakaan komunikasi rangkaian berprestasi tinggi yang ringan untuk bahasa PHP Kemunculannya telah meningkatkan prestasi dan kebolehskalaan aplikasi PHP. Nginx ialah pelayan web yang popular dan juga digunakan secara meluas untuk proksi terbalik dan pengimbangan beban. Menggunakan proksi terbalik Nginx dan pengimbangan beban dalam Swoole boleh memanfaatkan Swoole dengan lebih baik. Berikut ialah tutorial menggunakan Nginx untuk melaksanakan proksi terbalik dan pengimbangan beban Swoole.

  1. Pasang Nginx

Mula-mula anda perlu memasang Nginx, yang boleh dipasang melalui arahan berikut:

sudo apt-get update
sudo apt-get install nginx
  1. Konfigurasikan Nginx

Selepas pemasangan selesai, Nginx perlu dikonfigurasikan. Fail konfigurasi terletak di /etc/nginx/sites-available/default. Buka fail untuk diedit dan ubah suainya kepada kandungan berikut:

upstream swoole {
  server 127.0.0.1:9501 weight=10 max_fails=3 fail_timeout=30s;
  server 127.0.0.1:9502 weight=5 max_fails=3 fail_timeout=30s;
}

server {
  listen 80;
  server_name example.com;

  location / {
    proxy_pass http://swoole;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }
}

Dalam fail konfigurasi di atas, kami menentukan huluan bernama swoole, yang mengandungi dua alamat dan pemberat yang dipantau oleh perkhidmatan Swoole. Kami juga menyediakan hos maya untuk mendengar port 80 dan mengedarkan permintaan kepada gugusan swoole melalui proksi terbalik.

  1. Perkhidmatan Swoole Menulis

Seterusnya, anda perlu menulis perkhidmatan Swoole yang ringkas untuk menerima permintaan yang dikemukakan oleh Nginx. Berikut ialah kod contoh mudah:

<?php
 
$http = new SwooleHttpServer("0.0.0.0", 9501);
 
$http->on('request', function ($request, $response) {
    $response->header("Content-Type", "text/plain");
    $response->end("Hello World
");
});
 
$http->start();

Dalam kod di atas, kami mencipta perkhidmatan Swoole Http mendengar pada port 9501 dan mengembalikan rentetan Hello World dalam fungsi panggil balik permintaan.

  1. Mulakan perkhidmatan Swoole

Jalankan arahan berikut untuk memulakan perkhidmatan Swoole:

php server.php

Pada ketika ini, perkhidmatan Swoole telah berjaya dimulakan dan sedang mendengar pada port 9501.

  1. Mulakan Nginx

Akhir sekali, jalankan arahan berikut untuk memulakan Nginx:

sudo service nginx start

Pada ketika ini, Nginx telah berjaya dimulakan dan boleh diakses dengan melawati http:// example.com/ untuk menguji respons perkhidmatan Swoole.

  1. Uji pengimbangan beban

Untuk menguji fungsi pengimbangan beban Nginx, kami boleh memulakan perkhidmatan Swoole Http lain untuk mensimulasikan pelayan lain dan menjalankan arahan berikut untuk memulakan :

php server.php --port=9502

Pada masa ini, dalam fail konfigurasi Nginx, kami mentakrifkan berat satu port dalam kelompok swoole sebagai 10 dan berat port lain sebagai 5. Dengan kata lain, Nginx akan memajukan kira-kira 2/3 daripada permintaan ke port 9501, dan 1/3 daripada permintaan ke port 9502. Kami boleh menguji kefungsian pengimbangan beban dengan memuat semula http://example.com/ beberapa kali dalam penyemak imbas.

Ringkasan

Melalui operasi di atas, kami telah berjaya melaksanakan proksi terbalik dan fungsi imbangan beban Nginx dalam Swoole. Fungsi proksi terbalik dan pengimbangan beban Nginx boleh membantu kami mengedarkan permintaan dengan lebih baik dalam aplikasi Swoole dan meningkatkan keselarasan dan kestabilan tapak web dinamik.

Atas ialah kandungan terperinci Tutorial menggunakan proksi terbalik Nginx dan pengimbangan beban dalam Swoole. 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