Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk menggunakan pelayan proksi Nginx untuk melaksanakan sokongan protokol WebSocket?

Bagaimana untuk menggunakan pelayan proksi Nginx untuk melaksanakan sokongan protokol WebSocket?

WBOY
WBOYasal
2023-09-05 08:06:161568semak imbas

Bagaimana untuk menggunakan pelayan proksi Nginx untuk melaksanakan sokongan protokol WebSocket?

Bagaimana untuk menggunakan pelayan proksi Nginx untuk melaksanakan sokongan protokol WebSocket?

WebSocket ialah protokol komunikasi dupleks penuh berdasarkan TCP Ia membolehkan pelayan dan pelanggan menjalankan komunikasi dua hala dalam masa nyata dengan mewujudkan saluran komunikasi di mana kedua-dua pihak boleh mengekalkan sambungan jangka panjang komunikasi masa nyata, sembang segera, Senario seperti tolak data masa nyata. Apabila menggunakan WebSocket, kita selalunya perlu mengkonfigurasi pelayan proksi untuk memajukan permintaan dan respons WebSocket. Artikel ini akan memperkenalkan cara menggunakan pelayan proksi Nginx untuk melaksanakan sokongan untuk protokol WebSocket.

Langkah 1: Pasang Nginx

Pertama, kita perlu memastikan Nginx dipasang pada pelayan proksi. Jika ia tidak dipasang, sila pilih kaedah pemasangan yang sesuai mengikut sistem pengendalian.

Langkah 2: Ubah suai fail konfigurasi Nginx

Seterusnya, kita perlu mengubah suai fail konfigurasi Nginx. Buka fail konfigurasi Nginx dan tambah kod berikut dalam blok http: http块中添加以下代码:

map $http_upgrade $connection_upgrade {
    default upgrade;
    ''      close;
}

upstream backend {
    server 127.0.0.1:8080;
}

上述代码中,map指令用于将请求头中的Upgrade字段的值映射为$connection_upgrade变量的值。upstream指令用于定义后端服务器的地址,这里使用的是本地地址127.0.0.1:8080,你可以根据实际情况进行修改。

server块中添加以下代码:

location /websocket {
    proxy_pass http://backend;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $connection_upgrade;
}

上述代码中,location指令用于匹配WebSocket请求的路径。proxy_pass指令用于将请求转发给后端服务器。proxy_http_version指令用于指定代理协议的版本。proxy_set_header指令用于设置请求头,将UpgradeConnection

sudo service nginx restart

Dalam kod di atas, arahan map digunakan untuk menukar Upgrade medan dipetakan kepada nilai pembolehubah <code>$connection_upgrade. Arahan upstream digunakan untuk mentakrifkan alamat pelayan bahagian belakang Alamat tempatan 127.0.0.1:8080 digunakan di sini.

Tambah kod berikut dalam blok server:

var ws = new WebSocket("ws://your_domain/websocket");

ws.onopen = function() {
    console.log("Connected to WebSocket");
};

ws.onmessage = function(event) {
    console.log("Received message: " + event.data);
};

ws.onclose = function() {
    console.log("Disconnected from WebSocket");
};

Dalam kod di atas, arahan location digunakan untuk memadankan laluan permintaan WebSocket. Arahan proxy_pass digunakan untuk memajukan permintaan ke pelayan hujung belakang. Arahan proxy_http_version digunakan untuk menentukan versi protokol proksi. Arahan proxy_set_header digunakan untuk menetapkan pengepala permintaan dan memajukan medan Naik taraf dan Sambungan ke pelayan hujung belakang sebagaimana adanya.

Langkah 3: Mulakan semula perkhidmatan Nginx

Selepas melengkapkan pengubahsuaian fail konfigurasi, simpan dan tutup fail. Kemudian, mulakan semula perkhidmatan Nginx untuk konfigurasi berkuat kuasa. Masukkan arahan berikut dalam baris arahan:

rrreee

Langkah 4: Uji sambungan WebSocket

Pada ketika ini, kami telah melengkapkan konfigurasi Nginx. Seterusnya, kita boleh menggunakan alat klien WebSocket atau menulis aplikasi web mudah untuk menguji sambungan WebSocket. Berikut ialah contoh kod mudah: 🎜rrreee🎜 Simpan kod di atas sebagai fail HTML dan buka fail dalam penyemak imbas anda. Jika anda melihat output "Disambungkan ke WebSocket" dalam alat pembangun penyemak imbas, ini bermakna sambungan WebSocket berjaya. 🎜🎜Ringkasan: Melalui langkah di atas, kami berjaya menggunakan pelayan proksi Nginx untuk melaksanakan sokongan untuk protokol WebSocket. Dengan cara ini, kami boleh menggunakan prestasi Nginx yang berkuasa dan konfigurasi fleksibel untuk mencapai komunikasi WebSocket yang lebih cekap dan stabil. Walau bagaimanapun, perlu diingatkan bahawa Nginx sendiri bukanlah pelayan WebSocket Ia hanya digunakan sebagai pelayan proksi untuk memajukan sambungan WebSocket ke pelayan belakang untuk diproses. Jika anda perlu menggunakan pelayan WebSocket yang lengkap, kami boleh mempertimbangkan untuk menggunakan perisian pelayan WebSocket khusus yang lain. 🎜

Atas ialah kandungan terperinci Bagaimana untuk menggunakan pelayan proksi Nginx untuk melaksanakan sokongan protokol WebSocket?. 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