【问题标题】:Deploy Nginx, Socket IO, Linode 404 error部署 Nginx、Socket IO、Linode 404 错误
【发布时间】:2016-02-12 06:55:15
【问题描述】:

我一直在努力尝试将 NodeJS 服务器部署为 Linode 上的 SocketIO 服务器。我已经部署了运行良好的 Django 项目,并且我已经重定向了一个子域以与侦听本地主机端口 8002 的节点服务器通信。 我的 nginx 日志中出现 404 错误。

"GET /socket.io/?EIO=3&transport=polling HTTP/1.1" 404 72 "-" "Dalvik/2.1.0 (Linux; U; Android 5.0.1; LG-D850 Build/LRX21Y)"

这是我的 nginx 配置

server {
        listen 80;
        server_name www.domain.com;
        location / {
                 proxy_pass http://127.0.0.1:8000;
        }
        location /static {
                alias /home/exampledir/staticfiles;
        }
        access_log  /home/exampledir/nginx-access.log;
        error_log  /home/exampledir/nginx-error.log info;
}
server {
    listen 80;
    server subdomain.domain.com;
    location / {
        proxy_pass http://127.0.0.1:8002;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
    }
}

这是我的 nodejs 服务器文件

var socket = require('socket.io');
var express = require('express');
var http = require('http');
var app = express();
var server = http.createServer(app);
server.listen(8002, '127.0.0.1');
var io = socket.listen(server);
var redis = require('redis');
var sub = redis.createClient();
sub.subscribe('notify');
io.on('connection', function(socket){
    socket.on('join', function (data) {
        ...
    });
});
//Grab message from Redis and send to client
sub.on('message', function(channel, message){
...
});

我尝试过使用 CORS 和其他东西,但它不起作用,只是一直给我一个 404。我已经验证节点服务器在 127.0.0.1:8002 运行 我的 android 套接字正在连接到

mSocket = IO.socket("http://subdomain.domain.com/);

请帮忙。

【问题讨论】:

  • 您确认应用服务器上的127.0.0.1:8002/socket.io 按预期返回了吗?你有办法直接测试到 NodeJS 端口的完整 WebSocket 协商吗?如果您遵循nginx.com/blog/websocket-nginx 中的示例,您是否为$connection_upgrade 设置了变量映射?

标签: node.js sockets nginx deployment socket.io


【解决方案1】:

试试这个配置

server {

    listen 80;

    # Make site accessible from http://localhost/

    server_name domain.com;

    location / {

             proxy_pass http://127.0.0.1:8000;

    }


    location / {

             proxy_pass http://127.0.0.1:8000;

    }

    location /static {

            alias /home/example-dir/staticfiles;

    }

    access_log  /home/example-dir/nginx-access.log;

    error_log  /home/example-dir/nginx-error.log info;

  }



 server {

    listen 80;

    server_name subdomain.domain.com;

    location / {

            proxy_pass http://127.0.0.1:8002;

            proxy_http_version 1.1;

            proxy_set_header Upgrade $http_upgrade;

            proxy_set_header Connection "upgrade";

            proxy_set_header Host $host;

    }

    access_log  /home/example-dir/socketnginx-access.log;

    error_log  /home/example-dir/socketnginx-error.log info;

   }

【讨论】:

    猜你喜欢
    • 2018-06-02
    • 2020-08-27
    • 1970-01-01
    • 1970-01-01
    • 2022-01-22
    • 2018-07-30
    • 1970-01-01
    • 2016-10-08
    • 2021-03-29
    相关资源
    最近更新 更多