加入我们,于10月8日至10日在纽约市,学习有关 GraphQL 联邦和 API 平台工程的最新的技巧、趋势和新闻。参加2024年纽约市GraphQL峰会
文档
免费开始

代理配置

配置出站请求的代理设置


Apollo平台的一些功能(如托管联邦)需要 来发送出站请求至Apollo Studio。根据安全策略,您可能需要配置一个出站HTTP代理以便允许此类请求。

尽管 Apollo Server 支持通过 https.globalAgenthttp.globalAgent 直接进行标准 Node.js "agent" 配置,但我们推荐使用 global-agent 包,以减少与创建自定义代理相关的必要配置。

global-agent 包允许使用环境变量(例如 HTTP_PROXYNO_AGENT 等)设置代理设置,这是 Node.js 本身所不支持的(可能永远都不会)。

配置代理代理

本指南涵盖了由 Node.js 版本 10 及更高版本支持的 global-agent 包。

安装 global-agent 依赖项

首先,使用您的依赖项管理器安装 global-agent 包:

npm install global-agent

启动 global-agent 代理代理

安装了global-agent依赖后,请在创建Apollo Server之前调用其bootstrap方法:

import { ApolloServer } from '@apollo/server';
import { bootstrap } from 'global-agent';
// Setup global support for environment variable based proxy configuration.
bootstrap();
// The following represents existing configuration, though its
// important to bootstrap the agent before Apollo Server.
const server = new ApolloServer({
typeDefs,
resolvers,
});

使用环境变量配置代理

根据部署环境(例如AWS、Heroku、Kubernetes、Docker等),环境变量的设置可能会有所不同。以下说明将演示如何使用基于Unix的shell中的环境变量启动node进程。

默认情况下,以上初始化步骤将启用以下环境变量

  • GLOBAL_AGENT_HTTP_PROXY

    这通常是设置最重要的且必需的环境变量。

  • GLOBAL_AGENT_HTTPS_PROXY

    此变量定义HTTPS流量(即加密的SSL/TLS流量)应该代理的位置。如果不设置此变量,HTTPS流量将通过HTTP代理路由。

  • GLOBAL_AGENT_NO_PROXY

    此变量允许排除特定域名进行代理。

设置这些环境变量后,可以配置用于出站请求的global-agent代理的创建。如果代理需要特殊的SSL/TLS请求证书,请查看本页后面的详细信息。

使用适当的 环境 变量定义,在启动服务器时进行设置。例如,要从一个Node.js服务器发送所有出站请求到http://proxy:3128,配置将是:

$ GLOBAL_AGENT_HTTP_PROXY=http://proxy:3128/ node index.js

还可以定义GLOBAL_AGENT_NO_PROXY环境变量来排除某些URL的代理:

$ GLOBAL_AGENT_NO_PROXY='*.foo.com,10.0.1.100,baz.com' node index.js

更多信息,请参阅排除URLglobal-agent文档中。

如上所示,所有支持的环境变量都以GLOBAL_AGENT_为前缀,以避免使用不常见的非前缀版本(例如HTTP_PROXY)带来的不可取的副作用。了解更多信息要禁用这种默认的命名空间(即前缀),可以启动服务器时将GLOBAL_AGENT_ENVIRONMENT_VARIABLE_NAMESPACE设置为空字符串:

$ GLOBAL_AGENT_ENVIRONMENT_VARIABLE_NAMESPACE="" HTTP_PROXY=http://proxy:3128/ node index.js

当然,也可以提供自定义命名空间。有关配置详情,请参阅《global-agent》的文档

指定自定义SSL/TLS证书

根据代理通信的情况,可能需要扩展Node.js信任的默认“root”证书,以包括由代理管理员提供的证书。这些证书通常允许代理处理SSL/TLS流量,并允许代理分析此类流量。

这可以通过Node.js的NODE_EXTRA_CA_CERTS环境变量来实现:

  1. 相应的证书(即PEM文件)必须位于服务器运行所在的文件系统中。
  2. 启动服务器时,将NODE_EXTRA_CA_CERTS环境变量设置为该路径,并结合上述解释的现有代理配置变量:
$ NODE_EXTRA_CA_CERTS=/full/path/to/certificate.pem \
GLOBAL_AGENT_HTTP_PROXY=http://proxy:3128/ \
node index.js
上一页
终止SSL
下一页
lambda
评分文章评分在GitHub上编辑编辑论坛Discord

©2024Apollo Graph Inc.,享有“Apollo GraphQL”商标。

隐私策略

公司