AWS Lambda函数中反向代理服务器的实现
Implementation of Reverse Proxy Server in AWS Lambda function
const app = require('express')();
const { createProxyMiddleware } = require('http-proxy-middleware');
app.all('*', createProxyMiddleware({ target: 'https://www.google.com/', changeOrigin: true
}));
const awsServerlessExpress = require('aws-serverless-express');
const server = awsServerlessExpress.createServer(app);
exports.handler = (event, context) => awsServerlessExpress.proxy(server, event, context);
这是我正在使用的代码。我的要求是实现反向代理服务器。问题是我在浏览器中收到以下错误:
GET http://127.0.0.1:3000/ net::ERR_CONTENT_DECODING_FAILED 200 (OK)
服务器正在正确发送响应,但存在压缩问题。
我尝试将以下 Mime 类型作为第三个参数传递给 createServer 函数:
const binaryMimeTypes = [
'application/javascript',
'application/json',
'application/octet-stream',
'application/xml',
'font/eot',
'font/opentype',
'font/otf',
'image/jpeg',
'image/png',
'image/svg+xml',
'text/comma-separated-values',
'text/css',
'text/html',
'text/javascript',
'text/plain',
'text/text',
'text/xml'
]
const server = awsServerlessExpress.createServer(app, null, binaryMimeTypes);
但是运气不好。
谁能帮我解决这个问题?提前致谢。
我通过覆盖 Accept-Encoding header:
解决了它
app.all('*', (req, res, next) => {
createProxyMiddleware({ target: 'https://www.google.com/', changeOrigin: true,
onProxyReq: (proxyReq, req, res) => {
proxyReq.setHeader('Accept-Encoding', 'identity');
}
})(req, res, next);
});
此解决方案未优化。由于此解决方案将发送响应 un-compressed,这将增加响应内容的长度。但现在这解决了我的问题。如果我找到任何其他解决方案,我会更新。
const app = require('express')();
const { createProxyMiddleware } = require('http-proxy-middleware');
app.all('*', createProxyMiddleware({ target: 'https://www.google.com/', changeOrigin: true
}));
const awsServerlessExpress = require('aws-serverless-express');
const server = awsServerlessExpress.createServer(app);
exports.handler = (event, context) => awsServerlessExpress.proxy(server, event, context);
这是我正在使用的代码。我的要求是实现反向代理服务器。问题是我在浏览器中收到以下错误:
GET http://127.0.0.1:3000/ net::ERR_CONTENT_DECODING_FAILED 200 (OK)
服务器正在正确发送响应,但存在压缩问题。
我尝试将以下 Mime 类型作为第三个参数传递给 createServer 函数:
const binaryMimeTypes = [
'application/javascript',
'application/json',
'application/octet-stream',
'application/xml',
'font/eot',
'font/opentype',
'font/otf',
'image/jpeg',
'image/png',
'image/svg+xml',
'text/comma-separated-values',
'text/css',
'text/html',
'text/javascript',
'text/plain',
'text/text',
'text/xml'
]
const server = awsServerlessExpress.createServer(app, null, binaryMimeTypes);
但是运气不好。
谁能帮我解决这个问题?提前致谢。
我通过覆盖 Accept-Encoding header:
解决了它app.all('*', (req, res, next) => {
createProxyMiddleware({ target: 'https://www.google.com/', changeOrigin: true,
onProxyReq: (proxyReq, req, res) => {
proxyReq.setHeader('Accept-Encoding', 'identity');
}
})(req, res, next);
});
此解决方案未优化。由于此解决方案将发送响应 un-compressed,这将增加响应内容的长度。但现在这解决了我的问题。如果我找到任何其他解决方案,我会更新。