Nginx配置支持WebSocket功能詳解
Nginx配置支持WebSocket功能
剛部署一個(gè)項(xiàng)目需要使用到WebScoket實(shí)現(xiàn)。但通過域名指向NG做了反向代理,發(fā)現(xiàn)通過域名訪問不了,通過查找資料后發(fā)現(xiàn)需要在Nginx添加WebSocket的轉(zhuǎn)發(fā)配置。
一、網(wǎng)上通用配置
在網(wǎng)上找到大部分配置如下所示
location /websocket/ {
proxy_pass http://myserver;
proxy_http_version 1.1;
proxy_read_timeout 360s;
proxy_redirect off;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade"; #配置連接為升級(jí)連接
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}使用如上連接,如果所有的連接僅僅為 "ws" 協(xié)議的請(qǐng)求是沒有問題的
但是如果要及支持 http 請(qǐng)求又支持 ws 請(qǐng)求上述配置就不起作用了
二、既支持http又支持ws的配置
通過nginx官方關(guān)于WebSocket的配置得知,可以自定義變量。
故配置如下,就可以做到既支持 ws 請(qǐng)求,又支持 http請(qǐng)求。
http {
#自定義變量 $connection_upgrade
map $http_upgrade $connection_upgrade {
default keep-alive; #默認(rèn)為keep-alive 可以支持 一般http請(qǐng)求
'websocket' upgrade; #如果為websocket 則為 upgrade 可升級(jí)的。
}
server {
...
location /chat/ {
proxy_pass http://backend;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade; #此處配置 上面定義的變量
proxy_set_header Connection $connection_upgrade;
}
}
}在這個(gè)配置中:
- map $http_upgrade $connection_upgrade 塊用于根據(jù)客戶端發(fā)送的 Upgrade 頭的值設(shè)置 Connection 頭的值。
- proxy_pass 指向WebSocket服務(wù)的后端地址。
- proxy_http_version 1.1 指定使用HTTP/1.1版本以保持連接打開。
- proxy_set_header Upgrade $http_upgrade 和 proxy_set_header Connection $connection_upgrade 確保正確的頭被發(fā)送到后端,以便它可以識(shí)別WebSocket連接。
確保您的Nginx版本是1.3或更高,以支持WebSocket。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
在Ubuntu上安裝Nginx的實(shí)現(xiàn)過程
本文詳細(xì)介紹了在Ubuntu系統(tǒng)中從源碼安裝Nginx的步驟,包括更新系統(tǒng)、安裝依賴、下載源碼、配置編譯選項(xiàng)、編譯安裝、創(chuàng)建專用用戶、配置Systemd服務(wù)、調(diào)整防火墻、驗(yàn)證安裝、管理和維護(hù)Nginx等內(nèi)容2026-04-04
Nginx配置http和https的實(shí)現(xiàn)步驟
Nginx是使用最多的代理服務(wù)器之一,本文主要介紹了Nginx配置http和https的實(shí)現(xiàn)步驟,具有一定的參考價(jià)值,感興趣的可以了解一下2024-03-03
Nginx URL重寫rewrite機(jī)制原理及使用實(shí)例
這篇文章主要介紹了Nginx URL重寫(rewrite)機(jī)制原理及使用實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08
nginx 配置代理服務(wù)地址最后多加反斜杠和不加反斜杠的區(qū)別小結(jié)
在使用Nginx配置代理服務(wù)時(shí),地址最后是否添加反斜杠(/)會(huì)對(duì)代理的URL處理產(chǎn)生影響,下面就來具體介紹一下,感興趣的可以了解一下2024-08-08

