我有一个由客户端和服务器端组成的Web应用程序。 在客户端只有3个文件。 一个是index.html ,一个是index.html中引用的app.js ,最后一个是子文件夹中的图片。
服务器端使用express.js来构build一个web服务器,但在生产中,我决定使用Nginx来提供静态文件(如html文件,js文件和图像文件)。
当用户访问index.html文件时,她可以使用在app.js编码的websocket协议连接到服务器。 它在开发模式下工作正常。 但是,在我设置使用Nginx之后,我无法再连接客户端来表示服务器。
快速服务器和websocket服务器正在侦听端口8888.但Nginx服务器侦听端口80.Nginx服务器仍在服务,但快速服务器始终响应“无法获取/”。 我的意图是使用Nginx来为客户端文件服务,我希望用户通过Nginx使用WebSocket协议发出请求,所以我没有生产中的express.js路由的代码(我只是创build快速服务器并将路由保留为空)反对我使用“webpack-hot-middleware”和“webpack-dev-middleware”路由请求的开发模式。 但我不知道如何摆脱“无法获取/”错误,并在生产模式下正确使用我的应用程序。 任何人都可以给我一些提示吗?
这是我的Nginxconfiguration:
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"