私はWebプログラミングに比較的慣れていません。HTMLページを生成する小さなC++サーバーを作成しました。私が正しく理解していれば、fastcgiメソッドは次のとおりです。
| Site1
| +------------+ +--------------+ +-------------+
|--|Apache/nginx|---|fastcgi socket|---|My C++ server|
| +------------+ +--------------+ +-------------+
........................................................
| Site2
+-----------------+ | +------------+ +--------------+ +-------------+
===|TCP from Internet|===|--|Apache/nginx|---|fastcgi socket|---|My C++ server|
+-----------------+ | +------------+ +--------------+ +-------------+
|
| <-firewall
私の理解は次のとおりです。間違っている場合は訂正してください
- ステップは、誰かがよく知られているアドレスへのTcp/Httpソケットを開くことです。http://www.example.com
- ファイアウォールのことなので、背中合わせのユーザーエージェントは、彼はexample.comであり、Webサーバー間でトラフィックルーティングを行っています。
- ファイアウォールは、アクセスなどをログに記録するWebサーバー(Apache / nginx)への別のソケットを開きます。
- WebサーバーがC++サーバーへの新しいソケットを開きます
- 私のC++サーバーはそのfastcgiソケットを取得し、接続を受け入れ、その接続でi/oイベントのポーリングを開始します
- そのfastcgi接続にデータが到着すると、それを読み取り、コンテンツをHTTPヘッダーおよびHTTPペイロードとして解析します
だから私の質問は、どのように認証するか、言い換えればユーザーを認識することができるかということです。では、1つの接続が1つのユーザーであるというのは本当ですか?ログイン/ログアウト状態を処理するすべての接続でステートマシンを起動する必要がありますか?したがって、新しい接続が受け入れられると、状態は「ログアウト」され、登録フォームが返送されます。ユーザーを取得したとき、または接続状態のステップを「ログイン」に渡すと、サーバーはパーソナライズされたコンテンツを送信します。