dvonlehman / s3-proxy

4front plugin to proxy read calls to S3
50 stars 29 forks source link

Express route is taken as s3 route part. #12

Open fdorantesm opened 5 years ago

fdorantesm commented 5 years ago

Hi, Von.

I solved this issue using req.params[0] instead req.originalUrl but i can't' make test pass for 404 error.

fdorantesm commented 5 years ago

Unorthodox solution:

req.originalUrl = req.originalUrl.replace('static', '')
app.get('/static/*', (req, res, next) => {
    req.originalUrl = req.originalUrl.replace(process.env.S3_PROXY_PATH, '')
    return s3Proxy({
      bucket: process.env.AWS_S3_BUCKET,
      accessKeyId: process.env.AWS_S3_ACCESS_KEY_ID,
      secretAccessKey: process.env.AWS_S3_SECRET_ACCESS_KEY
    })(req, res, next)
  })
ConnorSinnott commented 5 years ago

Same here. Except I placed the logic into middleware that is run immediately before the proxy.

mlasevich commented 4 years ago

FYI - you can also make it a little simpler by using a dedicated sub-app for your proxy:

So, something like:

var proxy = express();
proxy.get('/*', s3Proxy({
  bucket: process.env.AWS_S3_BUCKET,
  accessKeyId: process.env.AWS_S3_ACCESS_KEY_ID,
  secretAccessKey: process.env.AWS_S3_SECRET_ACCESS_KEY
 }));
app.use("/static", proxy);