我将 React 构建文件夹放在 AWS S3 存储桶上,因此我想创建一个反向代理服务器,通过适用于每条路由的 S3 存储桶 url 运行我的 React 构建文件夹。
我尝试制作反向代理服务器,但它仅适用于主路由,其他路由不起作用。如果我复制并粘贴网址,那么它不起作用。
const express = require('express')
const httpProxy = require('http-proxy')
const AWS = require("aws-sdk");
const path = require('path');
const s3 = new AWS.S3({
region: '',
credentials: {
accessKeyId: '',
secretAccessKey: ''
}
})
const app = express()
const PORT = 8000
const BASE_PATH = 'https://s3.com/__outputs'
const proxy = httpProxy.createProxy()
app.use("/*", async (req, res) => {
const hostname = req.hostname;
const subdomain = hostname.split('.')[0];
// Custom Domain - DB Query
const resolvesTo = `${BASE_PATH}/${subdomain}`
return proxy.web(req, res, {
target: resolvesTo,
changeOrigin: true
})
})
proxy.on('proxyReq', async (proxyReq, req, res) => {
const url = req.url;
console.log(url, "fielpath")
if (url === '/') {
proxyReq.path += 'index.html'
}
})
app.listen(PORT, () => console.log(`Reverse Proxy Running..${PORT}`))
您不需要额外的反向代理服务器来托管静态网站。
您可以 使用 Amazon CloudFront 发行版来提供静态网站 .
这更快、更便宜,并且需要更少的维护和运行您自己的反向代理。