WebSocket是HTML5开始提供的一种在单个TCP连接上进行全双工通信的协议,使得客户端和服务器之间的数据交换更加简单,允许服务器主动向客户端推送数据。Nginx从1.3.13版本开始添加了对WebSocket反向代理的支持,大大提升了处理WebSocket的能力,Nginx的WebSocket代理配置简单实用,通过ngx_http_upstream_module
模块,实现了服务器逻辑组,使架构更加灵活,下面是一个Nginx WebSocket反向代理的配置示例。
1. Nginx配置示例
# nginx.conf
worker_processes auto;
error_log /var/log/nginx/error.log info;
events {
worker_connections 1024;
}
http {
upstream backend {
server 127.0.0.1:8000;
}
# 简单示例
location /chat/ {
proxy_pass http://backend;
# 主要WebSocket代理配置
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
# 复杂示例
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
server {
location /chat/ {
proxy_pass http://backend;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
}
}
}
执行nginx -s reload
命令即可将Nginx作为WebSocket反向代理服务器。主要关键在于server配置段中的proxy_http_version
、proxy_set_header
指令,分别用于设置HTTP版本、Upgrade和Connection头部,实现了HTTP到WebSocket的升级。
原创文章,作者:geeklinux.cn,如若转载,请注明出处:https://www.geeklinux.cn/jsjc/1345.html