当前位置: 首页> 最新文章列表> Nginx配置WebSocket代理支持的完整指南

Nginx配置WebSocket代理支持的完整指南

M66 2025-07-09

WebSocket协议与Nginx代理的关系

WebSocket是一种基于TCP的双向通信协议,支持持久连接,广泛应用于实时通信、在线聊天、直播推送等场景。通常情况下,前端与后端之间需要通过代理服务器中转数据流,而Nginx作为高性能的反向代理服务器,可以很好地完成WebSocket的请求转发任务。

安装并准备Nginx环境

在开始配置之前,需要确保系统中已安装Nginx。如果尚未安装,可以根据使用的操作系统,通过包管理器或源码方式进行安装。

Nginx配置支持WebSocket

打开Nginx的主配置文件,通常位于/etc/nginx/nginx.conf,在http块中加入以下内容:

map $http_upgrade $connection_upgrade {
    default upgrade;
    ''      close;
}

upstream backend {
    server 127.0.0.1:8080;
}

map指令用于处理Upgrade头的信息,使其适配WebSocket的连接要求;upstream配置定义了后端应用服务器的地址。

接下来,在server块中添加处理WebSocket请求的配置:

location /websocket {
    proxy_pass http://backend;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $connection_upgrade;
}

该配置块的作用是将来自/websocket路径的请求转发给后端服务,同时确保HTTP请求头中保留必要的WebSocket字段。

重启Nginx使配置生效

修改配置完成后,需要重新加载或重启Nginx服务。执行以下命令即可:

<span class="fun">sudo service nginx restart</span>

确保没有语法错误或端口占用,配置才能成功生效。

前端示例测试WebSocket连接

完成服务器端配置后,可以通过一个简单的前端示例来测试WebSocket连接是否成功建立。以下是JavaScript代码示例:

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");
};

将上述代码嵌入到HTML文件中,在浏览器中打开页面后,如果控制台输出“Connected to WebSocket”,则说明连接成功。

总结

通过本文的配置步骤,可以让Nginx代理服务器支持WebSocket协议,从而实现高效的双向通信能力。这种架构特别适用于需要实时交互的场景,如在线游戏、实时数据仪表盘、聊天系统等。需要注意的是,Nginx只作为中间代理存在,真正的WebSocket服务仍由后端应用处理。