Vin*_*itz 6 nginx websocket node.js
我目前正在尝试在 nginx debian 远程服务器上部署我的 NODEJS 应用程序。它在本地主机中运行得很好。但是我在让 websocket 在远程 nginx 服务器上工作时遇到一些困难。我使用“ws”nodejs 模块。
这就是我声明我的 websocket 服务器端的方式:
var WebSocket_ = require('ws');
var wss = new WebSocket_.Server({port: 40510});
Run Code Online (Sandbox Code Playgroud)
这就是我打开 websocket 客户端的方式:
var ws = new WebSocket('ws://localhost:40510');
Run Code Online (Sandbox Code Playgroud)
我知道我必须在我的 Nginx VPS 上配置 /etc/nginx/sites-available/default :
我是否需要添加 websocket 块位置并定义特定的 proxipass ?如果是的话怎么办?
我是否必须替换 var "ws = new WebSocket('ws://localhost:40510');" 通过我的客户端代码中的另一条指令?
预先感谢您的答复!
如果您已经有一个服务器块,请将其放入其中(通常位于可用站点或 nginx.conf 内):
location /ws {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_pass http://localhost:40510;
}
Run Code Online (Sandbox Code Playgroud)
现在,根据您的 Nginx 侦听端口,您将配置客户端 IP/端口(默认情况下,Nginx 侦听端口 80)
var ws = new WebSocket('ws://localhost:80/ws');
Run Code Online (Sandbox Code Playgroud)
完整配置文件(示例):
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
fastcgi_buffers 64 4K;
server {
listen localhost:80 default_server;
server_name localhost;
# Logs
access_log /var/log/nginx/main.access.log;
error_log /var/log/nginx/main.error.log;
# Websocket
location /ws {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_pass http://localhost:40510;
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7713 次 |
| 最近记录: |