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
指令用于设置请求头,将Upgrade
和Connection
sudo service nginx restart
map
digunakan untuk menukar Upgrade< / dalam pengepala permintaan Nilai kod> 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"); };
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 NginxSelepas 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 WebSocketPada 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!