You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker环境下Shopware 6 Webpack热重载502错误求助

解决Docker+Nginx环境下Shopware 6热代理502问题

核心问题分析

热代理默认监听localhost,容器内的服务仅能被自身访问,Nginx作为反向代理从容器网络发起请求时会被拒绝,这就是控制台出现Rejecting request提示的原因。同时Nginx代理配置缺少必要的请求头,也会导致请求异常。

具体修复步骤

1. 修改热代理监听地址

启动热代理时,指定绑定到容器的所有网卡(0.0.0.0),让容器外的服务(包括Nginx)能正常访问:

./bin/watch-storefront.sh --host 0.0.0.0

也可以在Shopware的.env文件中添加全局配置,避免每次启动都加参数:

WEBPACK_DEV_SERVER_HOST=0.0.0.0

2. 优化Nginx代理配置

在热代理对应的server块中添加必要的代理头,同时支持WebSocket(热重载依赖该协议):

server {
    listen 9998;
    listen [::]:9998;
    # 如需HTTPS访问,添加证书配置(替换为你的证书路径)
    # listen 9998 ssl;
    # ssl_certificate /etc/nginx/certs/localhost.crt;
    # ssl_certificate_key /etc/nginx/certs/localhost.key;

    location / {
        proxy_pass http://naturanum_app:9998;
        # 传递请求头确保服务端正确识别请求来源
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        # 支持WebSocket协议
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}

注意:如果Nginx容器和应用容器不在同一Docker网络,需确保naturanum_app能被正确解析,或直接替换为应用容器的IP地址。

3. 验证容器网络与端口映射

  • 确认docker-compose.yml中应用容器的9998端口映射正确:
services:
  naturanum_app:
    ports:
      - "9998:9998"
      # 其他端口配置...
  • 确保Nginx容器和应用容器处于同一Docker网络,否则Nginx无法通过容器名访问应用服务:
networks:
  shopware-network:
    driver: bridge

services:
  naturanum_app:
    networks:
      - shopware-network
  nginx:
    networks:
      - shopware-network

4. 重启服务验证

  • 重启Nginx容器加载新配置:
docker-compose restart nginx
  • 重新启动热代理(若已配置.env则无需额外参数):
./bin/watch-storefront.sh
  • 访问http://localhost:9998(或配置的HTTPS地址),此时应能正常加载页面,修改主题文件后会自动触发热重载。

内容的提问来源于stack exchange,提问作者metallike

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 04:30:58