Google App Engineプロジェクトがあります。このプロジェクトでは、カスタムドメインとSSL証明書をセットアップしました。したがって、https://www.mysite.xxx
、http://www.mysite.xxx
、およびネイキッドドメインmysite.xxx
のみを使用できます。
最後の2つを永続的にリダイレクトして、常に安全なhttps://
ドメインを開発者コンソールを使用して使用することはできますか、それともコードでリダイレクトする必要がありますか?
したがって、yamlファイルに「secure:always」を追加できます
https://cloud.google.com/appengine/docs/python/config/appconfig?hl=ja#Python_app_yaml_Secure_URLs
(Nodeの場合)、app.yamlで、以下を追加します:
handlers:
- url: /.*
secure: always
redirect_http_response_code: 301
script: auto
リファレンス: https://cloud.google.com/appengine/docs/standard/nodejs/config/appref
完全を期すために。 Java方法は、このようにトランスポート保証を機密に設定することです。
<security-constraint>
<web-resource-collection>
<web-resource-name>profile</web-resource-name>
<url-pattern>/profile/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
これも見つけることができます ドキュメントのここに 。
念のため、App Engine Flexibleのapp.yamlにセキュアハンドラーを含めることはできません。これらのハンドラーはサポートされていません。
ハンドラーでの安全な設定は、App Engineフレキシブル環境では非推奨になりました。 SSLリダイレクトが必要な場合は、アプリケーションコードを更新し、X-Forwarded-Protoヘッダーを使用してhttpトラフィックをリダイレクトできます。 (参照: https://cloud.google.com/appengine/docs/flexible/Java/upgrading#appyaml_changes )
参照はJavaからですが、Nodeでも同じようです。ハンドラーを含めようとしましたが、機能しませんでした。
ご覧のとおり、可能な解決策は「X-Forwarded-Protoヘッダーを使用してhttpトラフィックをリダイレクトする」ことです。 App Engineスタンダードに移行するため、これを試したことはありませんが、誰かがそれを実行して説明しました こちら 。
ドメインを購入するか、を Googleドメイン に移管した場合は、 G-Suite の Synthetic records セクションの下にあります:
アプリケーションで行う必要があります。この投稿を確認してください https://stackoverflow.com/a/54289378/5293578
私は次のコードを試してみましたが、うまくいきました(これをデフォルトのリクエストとエラーハンドラの前に置く必要があります)。
/**==== File: server.js =======**/
/** Express configuration **/
// HTTPS Redirection
if (process.env.NODE_ENV === 'production') {
app.use (function (req, res, next) {
var schema = (req.headers['x-forwarded-proto'] || '').toLowerCase();
if (schema === 'https') {
next();
} else {
res.redirect('https://' + req.headers.Host + req.url);
}
});
}
/** ... more configuration **/
// Default request handler
app.use(function(req, res, next) {
// ... your code
});
// Default error handler
app.use(function(err, req, res, next) {
// ... your code
});