gpt4 book ai didi

google-app-engine - 在 App Engine 柔性环境自定义运行时强制使用 SSL

转载 作者:太空宇宙 更新时间:2023-11-03 12:40:26 25 4
gpt4 key购买 nike

我们使用基于 openjdk:8 的 Dockerfile 在 App Engine 灵活自定义运行时上运行 Metabase 实例。目前它允许访问 http://[metabase-project].appspot.com/https://[metabase-project].appspot.com/ .我想通过将所有 http 流量重定向到 https 来强制使用 SSL。

Dockerfile 看起来像这样:

FROM openjdk:8
ADD https://dl.google.com/cloudsql/cloud_sql_proxy.linux.amd64 ./cloud_sql_proxy
ADD http://downloads.metabase.com/v0.21.1/metabase.jar ./metabase.jar
CMD ./cloud_sql_proxy -instances=$INSTANCE=tcp:$MB_DB_PORT -dir=/cloudsql & java -jar ./metabase.jar

我们的 app.yaml 看起来像:

service: metabase
runtime: custom
env: flex

在普通的 App Engine app.yaml 文件中,我想添加:

handlers:
- url: [something]
secure: always

但是在自定义运行时我们无法访问这样的处理程序。有没有办法配置灵活运行时来为所有流量执行重定向?

最佳答案

回答晚了,但为了做到这一点,我不得不付出很多努力。

我点击了提到以下代码的各种链接,

app.use(function(req, res, next) {
if(!req.secure) {
return res.redirect(['https://', req.get('Host'), req.url].join(''));
}
next();
});

这可能适用于其他云供应商。

但是在@zengabor 正确提到的 GCP 中,我们的应用程序将在终止 SSL 连接的 nginx 反向代理后面运行,我们需要检查可以完成的 X-FORWARDED-PROTO通过以下代码,

app.use(function(req, res, next) {
if(req.headers['x-forwarded-proto'] && req.headers['x-forwarded-proto'] === "http") {
return res.redirect(['https://', req.get('Host'), req.url].join(''));
}
next();
});

只是在阅读@zengabor 的代码后添加我的答案,我不得不再次搜索如何实现它。以上是可以使用的现成代码。

关于google-app-engine - 在 App Engine 柔性环境自定义运行时强制使用 SSL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41944776/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com