Ubuntu虚拟机部署Shopify应用授权链接无法访问问题求助
检查本地端口监听状态
先确认你的开发服务器是否真的在3456端口运行,执行以下命令:sudo lsof -i :3456 # 或 netstat -tulpn | grep 3456如果无输出,说明
npm run dev未成功启动服务,或服务绑定了其他端口,查看终端启动日志确认实际端口。修正Nginx反向代理配置
你混淆了本地端口与公共域名的代理逻辑:Shopify授权需通过公共URL访问,而非本地127.0.0.1链接。正确的Nginx配置应将公共域名反向代理到本地dev服务端口,示例如下:server { listen 80; server_name your-public-domain.com; location / { proxy_pass http://127.0.0.1:3456; 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; } }配置完成后重启Nginx:
sudo systemctl restart nginx测试公共域名是否能访问本地服务(在虚拟机外浏览器访问
your-public-domain.com)。核对Shopify应用环境变量
检查项目根目录的.env文件,确保SHOPIFY_APP_URL设置为你的公共域名(如https://your-public-domain.com,若用HTTPS需配置SSL证书),而非本地IP。修改后重启npm run dev,此时生成的授权链接应指向公共域名。配置虚拟机端口转发
若Ubuntu虚拟机运行在物理机上,需在虚拟机网络设置(如VirtualBox端口转发、VMware NAT规则)中,将物理机的80/443端口转发到虚拟机对应端口,确保外部(含Shopify服务器)可访问你的公共域名服务。使用正确的授权链接
不要直接访问http://127.0.0.1:3456/?c,而是使用npm run dev输出的完整授权链接(含公共域名与shop参数)在浏览器打开,完成Shopify授权流程。若生成链接仍指向127.0.0.1,重新检查.env文件配置。
内容的提问来源于stack exchange,提问作者Amit Choudhary

