Nginx配置支持WebSocket功能詳解
Nginx配置支持WebSocket功能
剛部署一個項目需要使用到WebScoket實現(xiàn)。但通過域名指向NG做了反向代理,發(fā)現(xiàn)通過域名訪問不了,通過查找資料后發(fā)現(xiàn)需要在Nginx添加WebSocket的轉發(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"; #配置連接為升級連接 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é)議的請求是沒有問題的
但是如果要及支持 http 請求又支持 ws 請求上述配置就不起作用了
二、既支持http又支持ws的配置
通過nginx官方關于WebSocket的配置得知,可以自定義變量。
故配置如下,就可以做到既支持 ws 請求,又支持 http請求。
http { #自定義變量 $connection_upgrade map $http_upgrade $connection_upgrade { default keep-alive; #默認為keep-alive 可以支持 一般http請求 'websocket' upgrade; #如果為websocket 則為 upgrade 可升級的。 } server { ... location /chat/ { proxy_pass http://backend; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; #此處配置 上面定義的變量 proxy_set_header Connection $connection_upgrade; } } }
在這個配置中:
- map $http_upgrade $connection_upgrade 塊用于根據(jù)客戶端發(fā)送的 Upgrade 頭的值設置 Connection 頭的值。
- proxy_pass 指向WebSocket服務的后端地址。
- proxy_http_version 1.1 指定使用HTTP/1.1版本以保持連接打開。
- proxy_set_header Upgrade $http_upgrade 和 proxy_set_header Connection $connection_upgrade 確保正確的頭被發(fā)送到后端,以便它可以識別WebSocket連接。
確保您的Nginx版本是1.3或更高,以支持WebSocket。
總結
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
安裝配置php-fpm來搭建Nginx+PHP的生產(chǎn)環(huán)境
這篇文章主要介紹了安裝配置php-fpm來搭建Nginx+PHP的生產(chǎn)環(huán)境的方法,php-fpm的作用是將FastCGI進程管理整合進PHP包,需要的朋友可以參考下2016-01-01詳解Nginx proxy_pass的一個/斜杠引發(fā)的血案
這篇文章主要介紹了詳解Nginx proxy_pass的一個/斜杠引發(fā)的血案,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-11-11