Proxlet is a POC, naïve implemetation of serverless reverse proxy for any website.
dev dependency: now-cli
now
curl https://{app_name}.now.sh/https://httpbin.org/get
dev dependency: Serverless Framework
# First customize serverless.yml's fields: provider.role, provider.region, etc.
make aws
# Then go to AWS API Gateway console, Setting, add Binary Media Type "*/*".
# (All contents are base64-encoded and will be decoded by the API Gateway.)
curl https://{id}.execute-api.{region}.amazonaws.com/dev/https://httpbin.org/get
CAVEAT: All subsequent requests fail because of they are lack of the stage path /dev
dev dependency: gcloud
make gcf
curl https://{region}-{project-id}.cloudfunctions.net/proxlet/https://httpbin.org/get
CAVEAT: All subsequent requests fail because of they are lack of the function path /proxlet
To get the real host of subsequent request of relative path, Proxlet sets a session cookie proxlet-host
with the value of real host. The server does not store the cookie.
- Cross-site requests are not proxied.
- Now.sh and AWS Lambda have an HTTP response size limit of 6MB. For GCF, it's 10MB.
- AWS Lambda's stage path / GCF's function name path makes all subsequent requests impossible (unless using a custom domain).