Javascript 设置HMR Create React应用程序在nginx反向代理后运行的最简单配置是什么?

Javascript 设置HMR Create React应用程序在nginx反向代理后运行的最简单配置是什么?,javascript,reactjs,create-react-app,Javascript,Reactjs,Create React App,我正在尝试一个始终无法运行默认CRA的反向代理后重新加载热模块。该应用程序工作正常,但HMR不工作,并且出现控制台错误:“webpackHotDevClient.js:60 WebSocket连接到”wss://react.syntapse.co.uk/sockjs-node'失败:建立连接时出错:net::ERR_连接被拒绝' nginx配置 server { listen 80; server_name react.syntapse.co.uk; location /

我正在尝试一个始终无法运行默认CRA的反向代理后重新加载热模块。该应用程序工作正常,但HMR不工作,并且出现控制台错误:“webpackHotDevClient.js:60 WebSocket连接到”wss://react.syntapse.co.uk/sockjs-node'失败:建立连接时出错:net::ERR_连接被拒绝'

nginx配置

server {
    listen 80;
    server_name react.syntapse.co.uk;
    location / {
        proxy_pass http://0.0.0.0:3120/;
        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;
     }
    location /sockjs-node/ {
        proxy_pass http://0.0.0.0:3120/sockjs-node/;
        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_read_timeout 86400s;
        proxy_send_timeout 86400s;
     }
}
.env配置:

PORT=3120

控制台错误:

webpackHotDevClient.js:60 WebSocket connection to 'wss://react.syntapse.co.uk/sockjs-node' failed: Error during WebSocket handshake: Unexpected response code: 301
./node_modules/react-dev-utils/webpackHotDevClient.js @ webpackHotDevClient.js:60
webpackHotDevClient.js:76 The development server has disconnected.
Refresh the page if necessary.
wss://react.syntapse.co.uk/sockjs-node 看起来完全正确,所以不确定它为什么会失败


感谢您的帮助或建议。谢谢。

WSS协议默认使用端口443,您可能希望使用
ws
而不是
WSS
您的配置显示端口80需要
ws
。。。您是在nginx内部终止tls,还是希望向下游服务器发送https流量。。。如果您希望使用nginx(https->http)终止tls,那么您需要
listen443ssl以及必要的tls密钥和证书文件。。。下游服务器代码通常不提及
wss://xxx
ws://xxx
,而是使用
://xxx
自动拾取Hanks Scott和Smakusors。我的设置是docker代理(https)->应用程序代理(http)->应用程序。因此docker代理提供加密,而应用程序代理是http。我想是对接应用程序的标准设置。Docker proxy将https转换为http和应用程序代理,并且应用程序是不安全的。在这种设置中,有没有一种方法可以让ws同样工作?谢谢