要使用 Nginx 配置 WebSockets 以支持跨域请求,必须使用 Nginx 的 http_sub_module
模块。
首先,确保您已经安装了 Nginx。 如果没有,请访问Nginx官网下载并安装。
打开Nginx配置文件。 通常位于 /etc/nginx/nginx.conf
或 /etc/nginx/sites 中。 -可用/默认
。 在 http
块中,启用 http_sub_module
模块。
http {
...
include /etc/nginx/modules-enabled/*.conf;
...
}
在 http
块中添加一个用于处理 WebSocket 请求的新 位置。
块。 将 proxy_pass
指令设置为 WebSocket 服务器的地址。 示例:
http {
...
服务器 {
Listen 80;
服务器名称 example.com;
位置 /websocket {
proxy_pass http://websocket_backend;
proxy_http_version 1.1;
proxy_set_header 升级 $http_upgrade;
proxy_set_header 连接“升级”;
proxy_set_header 主机 $host;
proxy_cache_bypass $http_upgrade;
}
}
...
}
这里, http://websocket_backend
是您的 WebSocket 服务器的地址。
为了支持跨域请求,必须在 location
块中添加以下 CORS 相关标头信息。
http {
...
服务器 {
...
位置 /websocket {
...
add_header 'Access-Control-Allow-Origin' '*' 总是;
add_header 'Access-Control-Allow-Methods' 'GET、POST、OPTIONS' 总是;
add_header '访问控制允许标头' 'DNT、用户代理、X 请求-With、If-Modified-since、缓存控制、C内容类型,范围,授权'总是;
if ($request_method = 'OPTIONS') {
add_header Access-Control-Max-Age 1728000;
add_header Content-Type 'text/plain=; utf-8';
add_header 内容长度 0;
return 204;
}
}
}
...
}
此处,Access-Control-Allow-Origin
设置为 *
。 这意味着所有域都允许相互访问。 域请求。 如果需要,您可以将其更改为特定域名。
保存配置文件并重新启动 Nginx 服务以应用更改。
sudo nginx -t
sudo 服务 nginx restart
< Nginx 现在配置了 WebSockets 以支持跨域请求。 客户端可以通过 ws://example.com/websocket
连接(将 example.com
替换为您的域名),而无需担心跨域问题。 WebSocket 服务器。
评论前必须登录!
注册