用于https域的带有NGINX proxy_pass的Webpack Dev Server导致:net :: ERR_CONNECTION_CLOSED

时间:2017-03-28 22:54:12

标签: angular nginx proxy

我已经设置了一个托管' angular2-webpack-starter'前端项目和nodejs后端项目。 nginx默认有两个proxy_pass,用于将连接映射到服务器上的正确位置。几乎所有内容都按预期工作。但是sockjs-node/info的代理存在问题,这让我感到很惊讶。

跑步时我看到:

zone.js:1960 GET https://localhost:3000/sockjs-node/info?t=1490740454197 net::ERR_CONNECTION_CLOSED

这两个代理是:

  location ^~ /server/ {
    proxy_set_header   X-Real-IP $remote_addr;
    proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header   Host      $host;
    proxy_set_header X-NginX-Proxy true;
    proxy_pass https://127.0.0.1:9000/;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
  }

  location ^~ / {
    #proxy_buffering    off;
    proxy_set_header   X-Real-IP $remote_addr;
    proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header   Host      $host;
    proxy_set_header X-NginX-Proxy true;
    proxy_pass http://127.0.0.1:3000/;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
  }

我已经查看过这个问题的其他几个答案,但无济于事。我尝试在前端添加cors的东西,没有任何意义,这没有任何效果。我尝试关闭proxy_buffering无济于事(正如我所料)。我甚至添加了< underscored_in_headers;'在nginx中,无济于事。

其他人已经使用webpack-dev-server来执行代理,但似乎nginx应该可以轻松处理这个问题,当我在没有webpack-dev-server的情况下进入生产时,我会遇到同样的问题。

如果您遇到过这个问题或有想法,我们将非常感谢您的帮助。

1 个答案:

答案 0 :(得分:4)

花了很长时间,但我发现了问题。其他人在开发期间尝试在安全站点上运行时可能会受益。

问题是proxy_pass到' http://127.0.0.1:3000/'。这会导致问题。

更改为:

proxy_pass https://127.0.0.1:3000/;

将webpack.dev.js中的devServer设置为:

  https: true,
  https: {
    key: fs.readFileSync('/etc/apache2/certwork/xxx.key'),
    cert: fs.readFileSync('/etc/apache2/certwork/xxx.crt'),
    ca: fs.readFileSync('/etc/apache2/certwork/ssl-bundle.crt')
  },

解决了这个问题。注意:https:true就足够了,但我希望尽可能接受连接,因此我添加了密钥,证书,ca等。

你仍会看到:

enter image description here

就我而言:

enter image description here

由于与' https://localhost:3000'的连接仍然与域名不匹配。 IE浏览器。 localhost!== parke.dynazu.com。但是一切正常,当我离开webpack-dev-server时,这不会是一个问题。