国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Rumah rangka kerja php ThinkPHP Menggunakan Websocket proksi terbalik Nginx dalam ThinkPHP6

Menggunakan Websocket proksi terbalik Nginx dalam ThinkPHP6

Jun 20, 2023 pm 09:31 PM
thinkphp nginx websocket

Dalam beberapa tahun kebelakangan ini, Websocket telah menjadi protokol komunikasi yang sangat penting dalam aplikasi Internet. ThinkPHP6, sebagai rangka kerja pembangunan PHP yang sangat baik, juga menyediakan sokongan untuk Websocket. Walau bagaimanapun, apabila menggunakan Websocket, kami biasanya melibatkan isu seperti domain silang dan pengimbangan beban Oleh itu, dalam artikel ini, kami akan memperkenalkan cara menggunakan Websocket terbalik Nginx dalam ThinkPHP6.

Pertama sekali, kita perlu menjelaskan prinsip asas dan kaedah pelaksanaan Websocket. Websocket menggunakan proses jabat tangan protokol HTTP untuk mewujudkan sambungan Selepas sambungan diwujudkan, protokol TCP digunakan untuk penghantaran data sebenar. Oleh itu, untuk penggunaan Websocket, kita perlu mempertimbangkan kedua-dua bahagian HTTP dan TCP.

Dalam aplikasi sebenar, kami biasanya menggunakan proksi terbalik Nginx untuk pengimbangan beban Websocket dan pemprosesan merentas domain. Mari perkenalkan cara menggunakan Websocket proksi terbalik Nginx dalam ThinkPHP6.

1. Konfigurasi Nginx

Kami boleh melaksanakan proksi terbalik untuk Websocket melalui fail konfigurasi Nginx. Pertama, kita perlu mengisytiharkan huluan dalam blok http:

http {
    upstream websocket_servers {
        server 127.0.0.1:8000;
        server 127.0.0.1:8001;
    }
}

Dalam konfigurasi di atas, kami mengisytiharkan huluan bernama websocket_servers, yang mengandungi dua alamat pelayan. Dengan cara ini, apabila pelanggan meminta Websocket, Nginx akan memajukan permintaan itu ke salah satu pelayan mengikut algoritma pengimbangan beban.

Seterusnya, tambahkan konfigurasi berikut dalam blok pelayan:

server {
    listen 80;
    server_name example.com;

    # 處理WebSocket請求
    location /ws {
        proxy_pass http://websocket_servers;
        proxy_set_header Host $http_host;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_read_timeout 86400;
    }

    # 處理其他請求
    location / {
        proxy_pass http://backend_server;
        proxy_set_header Host $http_host;
    }
}

Konfigurasi di atas akan mendengar port 80 dan membahagikan permintaan kepada dua situasi. Apabila pelanggan meminta /ws, ia akan dimajukan ke websocket_servers yang diisytiharkan di atas;

Untuk permintaan Websocket, kami perlu menetapkan beberapa pengepala permintaan khas, seperti Naik Taraf dan Sambungan. Di sini kami menetapkan pengepala permintaan ini melalui proxy_set_header. Ambil perhatian bahawa proxy_pass di sini mestilah protokol http, bukan protokol https.

2. Konfigurasi ThinkPHP6

Dalam ThinkPHP6, kita perlu memulakan perkhidmatan Websocket melalui Pelayan Swoole. Kami boleh memulakan perkhidmatan Websocket mudah melalui kod berikut:

<?php
use SwooleWebSocketServer;
use SwooleHttpRequest;
use SwooleWebSocketFrame;

$server = new Server("0.0.0.0", 8000, SWOOLE_PROCESS, SWOOLE_SOCK_TCP | SWOOLE_SSL);

$server->on("start", function (Server $server) {
    echo "Swoole WebSocket Server is started at http://0.0.0.0:8000
";
});

$server->on("open", function (Server $server, SwooleHttpRequest $request) {
    echo "connection open: {$request->fd}
";
    $server->push($request->fd, "hello, welcome
");
});

$server->on("message", function (Server $server, Frame $frame) {
    echo "received message: {$frame->data}
";
    $server->push($frame->fd, json_encode(["hello", "world"]));
});

$server->on("close", function (Server $server, $fd) {
    echo "connection close: {$fd}
";
});

$server->start();

Dalam kod di atas, kami mencipta pelayan WebSocket dan mendengar port 8000. Dalam acara terbuka, kami akan menerima permintaan sambungan daripada pelanggan dan menghantar mesej alu-aluan kepadanya. Dalam acara mesej, kami menerima mesej yang dihantar oleh pelanggan dan membalas dengan mesej. (Mesej balasan di sini hanyalah contoh mudah, dan perlu diubah suai mengikut keperluan sebenar dalam aplikasi sebenar.)

Perlu diingatkan di sini bahawa apabila menggunakan Websocket proksi terbalik Nginx, kita mesti menukar pelayan WebSocket Swoole Ikat pada port di bawah protokol TCP, bukan port di bawah protokol HTTP. Oleh itu, kita perlu menetapkan parameter ke-3 kepada SWOOLE_SOCK_TCP.

Kami juga boleh menggunakan mod berbilang proses Swoole untuk meningkatkan prestasi. Dalam parameter ke-4, kita boleh menetapkannya kepada SWOOLE_PROCESS dan menentukan nombor untuk mewakili bilangan proses.

Dalam aplikasi sebenar, kami mungkin perlu menggunakan beberapa pangkalan data atau fungsi cache dalam perkhidmatan Websocket, yang boleh dilaksanakan dengan mudah melalui fungsi suntikan kebergantungan ThinkPHP6.

3. Kod bahagian hadapan

Akhir sekali, mari kita lihat cara kod bahagian hadapan menggunakan Websocket.

var ws_url = "ws://example.com/ws";  // 注意這里的協(xié)議必須是ws

var websocket = new WebSocket(ws_url);

websocket.onopen = function () {
    console.log("WebSocket opened");
};

websocket.onmessage = function (evt) {
    console.log("WebSocket received message:", evt.data);
};

websocket.onclose = function () {
    console.log("WebSocket closed");
};

Dalam kod di atas, kami berkomunikasi dengan pelayan melalui objek WebSocket. Apabila sambungan dibuka, peristiwa onopen dicetuskan, apabila mesej diterima, acara onmessage dicetuskan, dan apabila sambungan ditutup, acara onclose dicetuskan.

Perlu diingatkan bahawa protokol di sini mestilah ws, bukan http atau https.

4. Ringkasan

Melalui pengenalan di atas, kita dapati bahawa sangat mudah untuk menggunakan Websocket proksi terbalik Nginx dalam ThinkPHP6. Anda hanya perlu melakukan beberapa konfigurasi asas dalam Nginx dan memulakan pelayan WebSocket dalam Swoole, dan anda boleh menggunakan WebSocket untuk berkomunikasi di bahagian hadapan. Jika anda menghadapi masalah dalam aplikasi sebenar, anda boleh merujuk kepada kod di atas untuk membetulkannya.

Atas ialah kandungan terperinci Menggunakan Websocket proksi terbalik Nginx dalam ThinkPHP6. 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

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

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.

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)

Topik panas

Tutorial PHP
1502
276
Nginx vs Apache: Analisis Perbandingan Pelayan Web Nginx vs Apache: Analisis Perbandingan Pelayan Web Apr 21, 2025 am 12:08 AM

Nginx lebih sesuai untuk mengendalikan sambungan serentak yang tinggi, manakala Apache lebih sesuai untuk senario di mana konfigurasi kompleks dan sambungan modul diperlukan. 1.Nginx dikenali dengan prestasi tinggi dan penggunaan sumber yang rendah, dan sesuai untuk kesesuaian yang tinggi. 2.apache terkenal dengan kestabilan dan sambungan modul yang kaya, yang sesuai untuk keperluan konfigurasi kompleks.

Nginx dan Apache: Memahami perbezaan utama Nginx dan Apache: Memahami perbezaan utama Apr 26, 2025 am 12:01 AM

Nginx dan Apache masing -masing mempunyai kelebihan dan kekurangan mereka sendiri, dan pilihannya harus berdasarkan keperluan khusus. 1.Nginx sesuai untuk senario konvensional yang tinggi kerana seni bina yang tidak menyekatnya. 2. Apache sesuai untuk senario rendah-concurrency yang memerlukan konfigurasi kompleks, kerana reka bentuk modularnya.

Bagaimana cara melaksanakan kod PHP selepas menulis kod PHP? Beberapa cara biasa untuk melaksanakan kod php Bagaimana cara melaksanakan kod PHP selepas menulis kod PHP? Beberapa cara biasa untuk melaksanakan kod php May 23, 2025 pm 08:33 PM

Kod PHP boleh dilaksanakan dengan banyak cara: 1. Gunakan baris arahan untuk terus memasukkan "nama fail php" untuk melaksanakan skrip; 2. Masukkan fail ke dalam direktori root dokumen dan mengaksesnya melalui penyemak imbas melalui pelayan web; 3. Jalankannya dalam IDE dan gunakan alat debugging terbina dalam; 4. Gunakan kotak pasir PHP dalam talian atau platform pelaksanaan kod untuk ujian.

Setelah memasang nginx, laluan fail konfigurasi dan tetapan awal Setelah memasang nginx, laluan fail konfigurasi dan tetapan awal May 16, 2025 pm 10:54 PM

Memahami laluan fail konfigurasi Nginx dan tetapan awal sangat penting kerana ia adalah langkah pertama dalam mengoptimumkan dan menguruskan pelayan web. 1) Laluan fail konfigurasi biasanya /etc/nginx/nginx.conf. Sintaks boleh didapati dan diuji menggunakan arahan NGINX-T. 2) Tetapan awal termasuk tetapan global (seperti pengguna, worker_processes) dan tetapan HTTP (seperti termasuk, log_format). Tetapan ini membolehkan penyesuaian dan lanjutan mengikut keperluan. Konfigurasi yang salah boleh membawa kepada isu prestasi dan kelemahan keselamatan.

Bagaimana untuk mengehadkan sumber pengguna di Linux? Bagaimana cara mengkonfigurasi ULIMIT? Bagaimana untuk mengehadkan sumber pengguna di Linux? Bagaimana cara mengkonfigurasi ULIMIT? May 29, 2025 pm 11:09 PM

Sistem Linux mengehadkan sumber pengguna melalui perintah ULIMIT untuk mengelakkan penggunaan sumber yang berlebihan. 1.Ulimit adalah arahan shell terbina dalam yang boleh mengehadkan bilangan deskriptor fail (-N), saiz memori (-V), kiraan thread (-u), dan lain-lain, yang dibahagikan kepada had lembut (nilai berkesan semasa) dan had keras (had atas maksimum). 2. Gunakan perintah ULIMIT secara langsung untuk pengubahsuaian sementara, seperti ULIMIT-N2048, tetapi hanya sah untuk sesi semasa. 3. Untuk kesan tetap, anda perlu mengubah suai /etc/security/limits.conf dan fail konfigurasi PAM, dan tambah sessionrequiredpam_limits.so. 4. Perkhidmatan SystemD perlu menetapkan LIM dalam fail unit

Apakah kemahiran konfigurasi Debian Nginx? Apakah kemahiran konfigurasi Debian Nginx? May 29, 2025 pm 11:06 PM

Apabila mengkonfigurasi Nginx pada sistem Debian, berikut adalah beberapa petua praktikal: struktur asas fail konfigurasi Global Fail: Tentukan parameter tingkah laku yang mempengaruhi keseluruhan perkhidmatan Nginx, seperti bilangan thread pekerja dan kebenaran pengguna yang sedang berjalan. Bahagian Pengendalian Acara: Memutuskan bagaimana Nginx berurusan dengan sambungan rangkaian adalah konfigurasi utama untuk meningkatkan prestasi. Bahagian Perkhidmatan HTTP: Mengandungi sejumlah besar tetapan yang berkaitan dengan perkhidmatan HTTP, dan boleh membenamkan beberapa pelayan dan blok lokasi. Pilihan Konfigurasi Teras Worker_Connections: Tentukan bilangan maksimum sambungan yang setiap thread pekerja boleh mengendalikan, biasanya ditetapkan ke 1024. Multi_accept: Aktifkan mod penerimaan pelbagai sambungan dan tingkatkan keupayaan pemprosesan serentak. s

Tujuan nginx: melayani kandungan web dan banyak lagi Tujuan nginx: melayani kandungan web dan banyak lagi May 08, 2025 am 12:07 AM

NginxserveswebcontentandactsasareVerseProxy, loadbalancer, andmore.1) itefficientlyservesstaticcontentlikehtmlandimages.2) itfunctionsasareverseProxyandloadalancer, distributingtrafficacrosservers.3)

Penyelesaian Masalah Nginx: Mendiagnosis dan Menyelesaikan Kesalahan Biasa Penyelesaian Masalah Nginx: Mendiagnosis dan Menyelesaikan Kesalahan Biasa May 05, 2025 am 12:09 AM

Diagnosis dan penyelesaian untuk kesilapan biasa Nginx termasuk: 1. Lihat fail log, 2. Laraskan fail konfigurasi, 3 mengoptimumkan prestasi. Dengan menganalisis log, menyesuaikan tetapan masa tamat dan mengoptimumkan cache dan mengimbangi beban, kesilapan seperti 404, 502, 504 dapat diselesaikan dengan berkesan untuk meningkatkan kestabilan dan prestasi laman web.

See all articles