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

部署Apollo v3到AWS EC2实例出现无法连接服务器报错如何解决?

错误说明

无法连接到服务器:从运行在HTTPS协议上的Studio向你的HTTP端点发送网络请求的操作不安全,因此我们无法对你的端点执行自检操作。

触发原因

Apollo Studio本身运行在HTTPS环境下,浏览器默认安全策略禁止HTTPS页面主动向未加密的HTTP端点发起跨协议请求,导致自检流程被拦截。

解决方案

方案1:直接为Apollo Server配置HTTPS(生产环境首选)

  • 提前将自定义域名解析到EC2实例的公网IP,同时在EC2安全组中开放80、443端口的入站规则。
  • 安装certbot工具申请免费Let's Encrypt SSL证书,执行命令:
    sudo certbot certonly --standalone -d 你的实际域名
    按照命令行提示完成证书申请流程。
  • 修改Apollo Server启动代码,加载SSL证书启动HTTPS服务,Node.js环境示例代码:
const { ApolloServer } = require('@apollo/server');
const { expressMiddleware } = require('@apollo/server/express4');
const express = require('express');
const https = require('https');
const fs = require('fs');

async function startServer() {
  const server = new ApolloServer({
    typeDefs,
    resolvers,
    introspection: true // 生产环境按需开启
  });

  await server.start();

  const app = express();
  app.use(express.json());
  app.use('/graphql', expressMiddleware(server));

  // 加载SSL证书启动HTTPS服务
  https.createServer({
    key: fs.readFileSync('/etc/letsencrypt/live/你的实际域名/privkey.pem'),
    cert: fs.readFileSync('/etc/letsencrypt/live/你的实际域名/fullchain.pem')
  }, app).listen(443, () => {
    console.log('Apollo Server 运行在 https://你的实际域名/graphql');
  });
}

startServer();
  • 配置完成后将HTTPS域名端点填写到Apollo Studio即可完成自检。

方案2:通过Nginx反向代理配置HTTPS

无需修改Apollo Server代码,适合同一EC2上运行多个服务的场景:

  • 同方案1第一步完成域名解析、端口开放和SSL证书申请。
  • 安装Nginx后编辑站点配置文件,添加反向代理规则,将HTTPS请求转发到本地运行的Apollo Server HTTP端口,示例配置:
server {
    listen 443 ssl;
    server_name 你的实际域名;

    ssl_certificate /etc/letsencrypt/live/你的实际域名/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/你的实际域名/privkey.pem;

    location /graphql {
        proxy_pass http://localhost:4000; # 替换为Apollo Server本地运行端口
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}
  • 执行nginx -s reload重启Nginx生效配置,使用HTTPS域名端点即可对接Apollo Studio。

方案3:临时测试替代方案(仅适用于开发调试)

不需要域名和SSL证书即可完成调试:

  • 开启Apollo Server自带Playground:在Apollo Server配置中添加introspection: true、playground: true参数,部署完成后直接访问EC2公网IP加端口的HTTP地址,即可打开本地Playground调试,无需使用线上Apollo Studio。
  • 隧道工具映射HTTPS端点:在EC2中安装ngrok后执行命令ngrok http 4000(将4000替换为Apollo Server实际运行端口),复制工具生成的HTTPS前缀的公网地址,填写到Apollo Studio即可完成自检。
  • 临时放行浏览器不安全请求:在Chrome浏览器的Apollo Studio站点设置中,将「不安全内容」权限设置为允许,即可临时绕过跨协议请求限制,该方法存在安全风险,仅可用于临时测试。

内容的提问来源于stack exchange,提问作者Enis Yıldız

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 19:36:03