Rumah  >  Artikel  >  Operasi dan penyelenggaraan  >  Konfigurasi WebSocket proksi terbalik Nginx untuk mencapai komunikasi segera

Konfigurasi WebSocket proksi terbalik Nginx untuk mencapai komunikasi segera

WBOY
WBOYasal
2023-07-05 08:36:092204semak imbas

Konfigurasi WebSocket proksi terbalik Nginx untuk mencapai komunikasi segera

WebSocket ialah protokol komunikasi berdasarkan protokol TCP Ia mewujudkan sambungan dua hala jangka panjang antara penyemak imbas dan pelayan, merealisasikan fungsi komunikasi masa nyata. Sebagai pelayan web berprestasi tinggi, Nginx juga boleh menyokong WebSocket melalui proksi terbalik dan mencapai pengimbangan beban yang lebih baik dan pemprosesan serentak yang tinggi.

Pertama, untuk mengkonfigurasi proksi terbalik dalam Nginx, anda perlu menambah konfigurasi lokasi dalam fail nginx.conf. Andaikan bahawa pelayan WebSocket sedang berjalan pada port tempatan 8000, dan kami membalikkan proksinya ke port 3000 pelayan Nginx Konfigurasi khusus adalah seperti berikut: nginx.conf文件中添加一段location的配置。假设WebSocket服务器运行在本地的8000端口上,我们将其反向代理到Nginx服务器的3000端口上,具体配置如下:

server {
    listen 3000;
    server_name your.server.name;
    
    location / {
        proxy_pass http://localhost:8000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
    }
}

在上述配置中,proxy_pass指令指定了要反向代理的WebSocket服务器的地址和端口。proxy_http_version指定了反向代理使用的HTTP版本,这里设置为1.1。proxy_set_header Upgradeproxy_set_header Connection指令告诉Nginx在转发WebSocket请求时不要修改UpgradeConnection请求头,以保证WebSocket连接的正常建立。

需要注意的是,如果WebSocket服务器运行在HTTPS协议下,需要在配置中添加proxy_set_header X-Forwarded-Proto $scheme;指令,以告诉服务器使用HTTPS协议。

完成以上配置后,重新加载Nginx配置文件使其生效:sudo nginx -s reload

接下来,我们可以使用WebSocket客户端来测试反向代理配置是否成功。以JavaScript为例,代码如下:

var socket = new WebSocket('ws://your.server.name/');
socket.onopen = function() {
    console.log('WebSocket连接已建立');
};
socket.onmessage = function(event) {
    console.log('收到消息:' + event.data);
};
socket.onclose = function() {
    console.log('WebSocket连接已关闭');
};

在上述示例中,我们创建了一个WebSocket对象,并指定了要连接的地址为Nginx服务器的地址。在onopenonmessageoncloserrreee

Dalam konfigurasi di atas, proxy_pass arahan menentukan proksi terbalik Alamat dan port pelayan WebSocket proksi. <code>proxy_http_version menentukan versi HTTP yang digunakan oleh proksi terbalik, di sini ia ditetapkan kepada 1.1. Arahan proxy_set_header Upgrade dan proxy_set_header Connection memberitahu Nginx supaya tidak mengubah suai pengepala permintaan Upgrade dan Connection apabila memajukan permintaan WebSocket . Memastikan penubuhan biasa sambungan WebSocket.

Perlu diambil perhatian bahawa jika pelayan WebSocket berjalan di bawah protokol HTTPS, arahan proxy_set_header X-Forwarded-Proto $scheme; perlu ditambahkan pada konfigurasi untuk memberitahu pelayan menggunakan HTTPS protokol.

Selepas melengkapkan konfigurasi di atas, muat semula fail konfigurasi Nginx untuk menjadikannya berkesan: sudo nginx -s reload. 🎜🎜Seterusnya, kita boleh menggunakan klien WebSocket untuk menguji sama ada konfigurasi proksi terbalik berjaya. Mengambil JavaScript sebagai contoh, kodnya adalah seperti berikut: 🎜rrreee🎜Dalam contoh di atas, kami mencipta objek WebSocket dan menentukan alamat untuk disambungkan sebagai alamat pelayan Nginx. Dalam fungsi panggil balik onopen, onmessage dan onclose, kami boleh mengendalikan peristiwa sambungan WebSocket yang berjaya, mesej diterima dan penutupan sambungan. 🎜🎜Melalui contoh konfigurasi dan kod di atas, kami boleh melaksanakan WebSocket proksi terbalik pada Nginx dan merealisasikan fungsi komunikasi segera. Melalui mekanisme pengimbangan beban dan prestasi tinggi Nginx, kami boleh menyediakan perkhidmatan yang stabil dan boleh dipercayai untuk aplikasi WebSocket dan mengendalikan sejumlah besar sambungan serentak. Pada masa yang sama, kerana Nginx mempunyai alat operasi dan penyelenggaraan dan pemantauan yang matang, kami boleh melakukan pengoptimuman prestasi dan penyelesaian masalah aplikasi WebSocket dengan mudah. 🎜🎜Ringkasnya, Nginx ialah pelayan web yang sangat baik Melalui konfigurasi proksi terbalik, kami boleh menyokong WebSocket dengan mudah dan menyediakan perkhidmatan pemesejan segera berprestasi tinggi. Untuk aplikasi web yang perlu melaksanakan fungsi pemesejan segera, konfigurasi proksi terbalik Nginx ialah penyelesaian yang patut diterokai dan digunakan. 🎜

Atas ialah kandungan terperinci Konfigurasi WebSocket proksi terbalik Nginx untuk mencapai komunikasi segera. 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