什么是HAProxy appsession请求 – 学习?

我正在阅读HAProxy手册 ,有一个我不理解的部分:

request-learn If this option is specified, then haproxy will be able to learn the cookie found in the request in case the server does not specify any in response. This is typically what happens with PHPSESSID cookies, or when haproxy's session expires before the application's session and the correct server is selected. It is recommended to specify this option to improve reliability. 

这是什么意思,“如果服务器没有指定任何响应”,具体是什么服务器响应,如果服务器没有指定一个cookie,学习一个cookie有什么意义?

“当haproxy的会话在应用程序会话之前到期”的问题似乎是一个重要的问题,但haproxy的处理在这里没有意义。

通常当你使用一个cookie的时候,它会通过一个“set-cookie”头来后端服务器的响应。 这通常是为了响应login。 如果这种情况没有发生,那么HAProxy将无法将您连接到相同的后端服务器

该选项允许HAProxy基于HTTP请求“了解”Cookie,而不仅仅是“set-cookie”的HTTP响应。

回答你的具体问题:

“服务器响应了什么? 任何HTTP请求

“学习服务器没有提供的cookie有什么意义?” 它允许HAProxy执行粘性,当你有一个服务器做非标准的事情,并不/不能提供的cookie如预期。 他提供的一个例子是“PHPSESSID”cookie。

“HAproxy的会话在应用程序的会话之前到期? HAProxy存储cookie以执行粘性。 他们有一个TTL之前,他们不再好。 在后端服务器的TTL长于HAProxy的TTL的情况下,HAProxy会在后端服务器之前忘记cookie。 客户端将在请求中有Cookie,HAProxy将能够重新学习cookie。

您的怀疑态度很好,因为如果您的后端服务器不复制会话信息,那么这个选项在TTL的情况下是有用的。 但是它仍然适用于非标准的Cookie案例场景。