如何为我的react.js应用程序创建反向代理服务器,从aws s3存储桶获取构建文件夹以工作所有路由?

问题描述 投票:0回答:1

我将 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-s3 reverse-proxy
1个回答
0
投票

您不需要额外的反向代理服务器来托管静态网站。
您可以 使用 Amazon CloudFront 发行版来提供静态网站 .
这更快、更便宜,并且需要更少的维护和运行您自己的反向代理。

© www.soinside.com 2019 - 2024. All rights reserved.