Web 应用程序无法通过 Nginx 使用 Websocket 连接到服务器

Web 应用程序无法通过 Nginx 使用 Websocket 连接到服务器

我有一个由客户端和服务器端组成的 Web 应用程序。客户端只有 3 个文件。一个index.html是 ,一个是app.js中引用的index.html,最后一个是子文件夹中的图像。

服务器端使用 express.js 来构建一个 Web 服务器,但在生产中我决定使用 Nginx 来提供静态文件(例如 html 文件、js 文件和图像文件)。

当用户访问index.html文件时,她可以使用 websocket 协议连接到服务器,该协议以 编码app.js。它在开发模式下运行良好。但在我将其设置为使用 Nginx 后,我无法再将客户端连接到 express 服务器。

express 服务器和 websocket 服务器正在监听端口 8888。但是 Nginx 服务器监听端口 80。Nginx 服务器仍在提供服务,但是 express 服务器始终响应“无法获取 /”。我的目的是使用 Nginx 来提供客户端文件,并且我希望用户通过 Nginx 使用 WebSocket 协议发出请求,因此我没有用于生产中的 express.js 路由的代码(我只是创建了 express 服务器并将路由留空),这与开发模式相反,在开发模式下,我使用“webpack-hot-middleware”和“webpack-dev-middleware”来路由请求。但是我不知道如何摆脱“无法获取 /”错误并在生产模式下正确使用我的应用程序。有人可以给我一些提示吗?

这是我的 Nginx 配置:

upstream upstream_project {
    server 127.0.0.1:8888;
    keepalive 64;
}

server {
        listen 0.0.0.0:80 default_server;
        listen [::]:80 default_server ipv6only=on;

        root /usr/local/share/html;
        index index.html index.htm;

        # Make site accessible from http://localhost/
        server_name ws_server;

        location / {
                try_files $uri $uri/ index.html;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header Host $http_host;
                proxy_set_header X-NginX-Proxy true;

                proxy_redirect off;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "upgrade";
                proxy_pass http://upstream_project;
                proxy_read_timeout 240s;
        }
}

更新:Nginx 日志:

*1 kevent() reported that connect() failed (61: Connection refused) while connecting to upstream, client: ::1, server: ws_server, request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:8888/", host: "localhost"

相关内容