Rumah  >  Artikel  >  Operasi dan penyelenggaraan  >  Tutorial konfigurasi Websocket proksi terbalik Nginx untuk mencapai komunikasi masa nyata

Tutorial konfigurasi Websocket proksi terbalik Nginx untuk mencapai komunikasi masa nyata

WBOY
WBOYasal
2023-07-04 08:19:361722semak imbas

Tutorial konfigurasi Websocket proksi terbalik Nginx untuk mencapai komunikasi masa nyata

Websocket ialah protokol berdasarkan sambungan panjang yang boleh mencapai komunikasi masa nyata Digabungkan dengan fungsi proksi terbalik Nginx, ia boleh mengurus dan mengedarkan permintaan Websocket dengan lebih baik. Artikel ini akan memperkenalkan cara mengkonfigurasi proksi terbalik Nginx untuk melaksanakan komunikasi masa nyata Websocket.

  1. Sahkan Nginx dipasang
    Pertama, pastikan Nginx dipasang pada pelayan. Jika ia tidak dipasang, anda boleh menggunakan arahan berikut untuk memasangnya:

    sudo apt-get update
    sudo apt-get install nginx
  2. Ubah suai fail konfigurasi Nginx
    Gunakan editor teks untuk membuka fail konfigurasi Nginx, biasanya terletak di /etc/nginx/nginx .conf atau /etc/nginx/conf.d/default.conf. Ubah suai seperti berikut: /etc/nginx/nginx.conf/etc/nginx/conf.d/default.conf。按照下面的示例进行修改:

    server {
    listen 80;
    server_name yourdomain.com;
    
    location /websocket {
       proxy_pass http://backend;
       proxy_http_version 1.1;
       proxy_set_header Upgrade $http_upgrade;
       proxy_set_header Connection "Upgrade";
    }
    }

    在上述配置中,我们定义了一个名为 websocket 的位置(location),并将请求代理到名为 backend 的后端服务器。注意 yourdomain.combackend 应该替换为你自己的域名和后端服务器地址。

此外,我们还设置了两个代理请求头 Upgrade 和 Connection,这是为了使 Nginx 能够正确处理 Websocket 连接。

  1. 重启 Nginx
    完成配置文件的修改后,保存并退出文本编辑器。然后使用以下命令重启 Nginx:

    sudo service nginx restart
  2. 测试Websocket连接
    现在你可以使用任何支持 Websocket 协议的客户端应用程序(如浏览器或终端工具)来测试你的 Websocket 服务器。假设你的域名是 yourdomain.com
    const socket = new WebSocket('ws://yourdomain.com/websocket');
    
    socket.onopen = () => {
       console.log('连接已建立');
    };
    
    socket.onmessage = (event) => {
       console.log('收到消息:', event.data);
    };
    
    socket.onclose = () => {
       console.log('连接已关闭');
    };
    
    socket.onerror = (error) => {
       console.error('发生错误:', error);
    };
  3. Dalam konfigurasi di atas, kami mentakrifkan lokasi bernama websocket dan proksi permintaan ke lokasi bernama backend pelayan backend. Ambil perhatian bahawa yourdomain.com dan backend harus digantikan dengan nama domain anda sendiri dan alamat pelayan backend.

Selain itu, kami juga menetapkan dua pengepala permintaan proksi, Naik Taraf dan Sambungan, untuk membolehkan Nginx mengendalikan sambungan Websocket dengan betul.

    🎜Mulakan semula Nginx🎜Selepas menyelesaikan pengubahsuaian fail konfigurasi, simpan dan keluar dari editor teks. Kemudian mulakan semula Nginx menggunakan arahan berikut: 🎜rrreee🎜🎜 Uji Sambungan Websocket🎜 Kini anda boleh menggunakan mana-mana aplikasi klien yang menyokong protokol Websocket (seperti pelayar atau alat terminal) untuk menguji pelayan Websocket anda. Dengan mengandaikan nama domain anda ialah yourdomain.com, gunakan kod berikut untuk menguji: 🎜🎜rrreee🎜Tampal kod di atas dan jalankannya dalam persekitaran yang didayakan JavaScript, seperti konsol alat pembangun penyemak imbas, atau Jalankan menggunakan Node.js. Jika anda dapat melihat log sambungan yang ditubuhkan, konfigurasi Nginx dan pelayan Websocket anda berfungsi dengan baik. 🎜🎜Ringkasan🎜Melalui konfigurasi proksi terbalik Nginx, kami boleh memproksi permintaan Websocket ke pelayan bahagian belakang untuk mencapai fungsi komunikasi masa nyata. Artikel ini menerangkan cara mengkonfigurasi Nginx dan kemudian menggunakan kod JavaScript untuk menguji sambungan Websocket. Saya harap artikel ini akan membantu anda memahami dan menggunakan Websocket proksi terbalik Nginx. 🎜

Atas ialah kandungan terperinci Tutorial konfigurasi Websocket proksi terbalik Nginx untuk mencapai komunikasi masa nyata. 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