node.js – 带有NGINX proxy_pass的Webpack Dev Server

前端之家收集整理的这篇文章主要介绍了node.js – 带有NGINX proxy_pass的Webpack Dev Server前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我正在尝试让webpack-dev-server在Docker容器内运行,然后通过Nginx主机访问它.最初的index.html加载,但与dev服务器的Web套接字连接无法连接.

VM47:35 WebSocket connection to ‘ws://example.com/sockjs-node/834/izehemiu/websocket’ Failed: Error during WebSocket handshake: Unexpected response code: 400

我正在使用以下配置.

  1. map $http_upgrade $connection_upgrade {
  2. default upgrade;
  3. '' close;
  4. }
  5. upstream webpack_dev_server {
  6. server node;
  7. }
  8. server {
  9. server_name _;
  10. listen 80;
  11. root /webpack_dev_server;
  12. location / {
  13. proxy_pass http://webpack_dev_server;
  14. }
  15. location /sockjs-node/ {
  16. proxy_pass http://webpack_dev_server/sockjs-node/;
  17. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  18. proxy_set_header Host $host; # pass the host header - http://wiki.Nginx.org/HttpProxyModule#proxy_pass
  19. proxy_http_version 1.1; # recommended with keepalive connections - http://Nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_http_version
  20. # WebSocket proxying - from http://Nginx.org/en/docs/http/websocket.html
  21. proxy_set_header Upgrade $http_upgrade;
  22. proxy_set_header Connection $connection_upgrade;
  23. }
  24. }
最佳答案
代理传递应该是你的webpack-dev-server容器的ip和端口,你需要关闭proxy_redirect;

  1. location /sockjs-node {
  2. proxy_set_header X-Real-IP $remote_addr;
  3. proxy_set_header X-Forwarded-For $remote_addr;
  4. proxy_set_header Host $host;
  5. proxy_pass http://node:8080;
  6. proxy_redirect off;
  7. proxy_http_version 1.1;
  8. proxy_set_header Upgrade $http_upgrade;
  9. proxy_set_header Connection "upgrade";
  10. }

另外,不要忘记将poll添加到webpack-dev中间件

  1. watchOptions: {
  2. aggregateTimeout: 300,poll: 1000
  3. }

猜你在找的Nginx相关文章