nginxリバースプロキシで、Cookieのセキュアフラグを設定するにはどうすればよいですか?


12

nginxをリバースプロキシとして使用して、httpsのみのサイトにサービスを提供しています。したがって、このサイトのCookieに安全のフラグを付けてください。しかし、バックエンドサーバーはhttpサーバーであるため、cookieにセキュアフラグを設定しません。安全なフラグを追加するための応答としてSet-Cookieヘッダーを変更するにはどうすればよいですか?


SOについて質問し、回答しました。Tomcat7のためnginxの例えばSO参照:stackoverflow.com/questions/19916906/...
ジョセフ・ラスト

1
そのようなオーバーライドは現在不可能ですが、問題/チケットがありますproxy_cookie_securetrac.nginx.org/nginx/ticket/368 ただし、まだ実装されていません(そして問題は古いです)。
rugk

このサードパーティのモジュールが役立ちます。
Airis

回答:


4

nginxプロキシにバックエンドで作成されたcookieを変更させ、安全なフラグを設定できる場合があります。インスピレーションについては、nginxリバースプロキシでSet-Cookieのドメイン部分を書き換える方法を参照してください

ただし、セキュアフラグを設定するために、バックエンドでCookieを作成しているものを取得する方がより良いソリューションになると思います。それを行う方法は別の話(または質問:)です。


4
X-Forwarded-Protoヘッダーを設定し、それがアプリケーションによって解釈されることを確認するのに役立ちます。これは一般的な手法であり、http / httpsの混合アプリケーションがプロトコルに基づいて適切に反応できるようにします。
Lukas 2013

4

次のnginx構成コードを使用します。

# make cookie secure (case sensitive)
proxy_cookie_domain ~(?P<secure_domain>([-0-9a-z]+\.)?[-0-9a-z]+\.[a-z]+)$ "$secure_domain; secure";

この動的な正規表現の代わりに、もちろんFQDNを使用できます。


これはただの応答ですか、それとも要求と応答の両方ですか。クライアントがセキュアフラグが設定されたリクエストを送信すると、nginxはそれを取り除き、Webサーバーが文句を言わないようにしますか?
Tigran 2018

クライアントはCookieヘッダーの安全なフラグを送り返しません。
r_3 2018

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.