我已经设置了一个服务器,它托管一个前端的“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 on;”在nginx中,无济于事。
其他人使用 webpack-dev-server 来做代理,但 nginx 似乎应该很容易处理这个问题,当我在没有 webpack-dev-server 的情况下转移到生产环境时,我也会遇到同样的问题。
如果您遇到过这个问题,或者有想法,我们将非常感谢您的帮助。
我花了很长时间,但我弄清楚了这个问题。其他人在开发过程中尝试在安全站点上运行时可能会受益。
问题是 proxy_pass 到 'http://127.0.0.1:3000/'。这会导致问题。
更改为:
代理通行证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 内容。
您仍然会看到:
就我而言:
由于连接到 'https://本地主机:3000' 仍然与域名不匹配。 IE。本地主机!==parke.dynazu.com。但一切正常,当我离开 webpack-dev-server 时,这将不再是问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)