问题描述
在连接我的代理之前,我需要从机密管理器中提取配置
const express = require('express');
const { createProxyMiddleware } = require('http-proxy-middleware');
const { SecretsManagerClient,GetSecretValueCommand } = require('@aws-sdk/client-secrets-manager');
const pjson = require('../app/config');
const app = express();
async function getSecretsManager(){
return secrets; // (this functions correctly,redacting for security)
}
const buildProxies = async (app) => {
const proxies = pjson['nonprod-proxies'];
const secrets = await getSecretsManager();
let proxiesToMap = [];
proxies.forEach(proxy => {
console.log(`[PROXY SERVER] Creating proxy for: ${proxy['proxy-path']}`);
let target,headers,options;
const rewrite = `^${proxy['proxy-path']}`;
if (proxy['internal'])
{
target = `https://${secrets['apiDomain']}`;
headers = {'x-api-key': secrets['apiKey']};
options = {
target: target,changeOrigin: true,logLevel: 'debug',headers
}
} else {
target = proxy['proxy-domain'];
options = {
target: `https://${target}`,pathRewrite: {
[rewrite]: ''
}
}
}
proxiesToMap.push({'path': proxy['proxy-path'],'options': options})
});
return proxiesToMap;
};
module.exports = function(app){
buildProxies().then(proxies => {
proxies.forEach(proxyVal => {
console.log(`Proxy: ${proxyVal['path']} with options ${proxyVal['options']}`);
app.use(proxyVal['path'],createProxyMiddleware(proxyVal['options']))
});
});
console.log('=== SUCCESSFULY CREATED PROXY SERVER ===');
};
这会导致 localhost:3000 返回样板 html cors 响应,但是,当将 module.exports 的代码替换为:
app.use('/internal/*',createProxyMiddleware({
target: '<my aws secret url>',headers: { 'x-api-key': '<my aws secret api key>' }
}));
代理工作。有没有办法在 setupProxy.js
内异步加载配置?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)