通过定义映射规则,可以配置从Web服务器到tomcat的请求转发。这样的规则将请求映射到工人。映射的请求部分由URI模式描述,工作器由其工作者名称描述。
所谓的uriworkermap文件是一种定义规则的机制,该规则适用于所有Web服务器。还有其他用于定义规则的Web服务器特定的配置选项,将在参考页上主要讨论如何为各个Web服务器配置tomcat连接器。
该文件的名称通常为uriworkermap.properties,尽管可以在Web服务器中对其进行配置。请查阅Web服务器特定的文档页面,以了解如何启用uriworkermap文件。
uriworkermap文件支持的主要功能是
- 支持规则文件中的注释。
- 完全匹配和通配符匹配,用于映射目录以及所有内容的快捷方式。
- 排除规则,禁用规则和规则优先级。
- 规则扩展,可按规则修改工作人员行为。
- 虚拟主机集成:uri映射规则可以表示每个虚拟主机。尽管详细信息是特定于Web服务器的。
- 动态重新加载:定期检查文件是否有更改。新版本将自动重新加载,而无需重新启动Web服务器。
- 与状态工作者集成。
以下各节将更详细地描述这些方面。
规则扩展是在1.2.27版本中添加的,在早期版本中不可用。
句法
规则扩展是其他属性,可以附加到任何规则。它们被添加到规则的末尾,每个扩展名之间用分号分隔:
# This is an extension example,
# setting a reply_timeout of 1 minute
# only for this mapping.
/myapp=myworker;reply_timeout=60000
#
# This is an example using multiple extensions
/myapp=myloadbalancer;reply_timeout=60000;stopped=member1
通过规则扩展设置的属性始终会覆盖工作程序定义文件中的冲突配置。
扩展名Reply_timeout
该扩展reply_timeout
为单个映射规则设置回复超时。
# Setting a reply_timeout of 1 minute
# only for this mapping.
/myapp=myworker;reply_timeout=60000
它会覆盖reply_timeout
为工作人员定义的任何内容。该扩展允许为工作人员设置合理的默认回复超时,并为URL设置更宽松的回复超时,众所周知,这些URL会启动耗时的任务。有关答复超时的一般说明,请参见 超时文档。
扩展名sticky_ignore
该扩展sticky_ignore
将禁用单个映射规则的会话粘性。
# Disable session stickyness
# only for this mapping.
/myapp/loginform.jsp=myworker;sticky_ignore=1
使用基于cookie的会话粘性时,此扩展对于优化负载平衡很有用。在这种情况下,只要她保持浏览器保持打开状态,即使启动了会话的用户离开了使用该会话的应用程序部分,启动会话的用户的任何请求也将被发送到相同的Tomcat实例。例如,您可以在用户请求登录表单时设置此环境变量,以确保此初始会话请求是非粘性平衡的。
此扩展自版本1.2.33起可用。
扩展无状态
该扩展stateless
仅在使用基于会话的负载平衡时才有用。在这种情况下,通常将没有会话ID的任何请求都计为新会话。如果使用stateless
扩展名标记映射规则,则与映射规则匹配的请求将不算作新会话,即使它们没有会话ID。
# Don‘t let static content trash our session balancing
/myapp/static/*=myworker;stateless=1
此扩展自版本1.2.33起可用。
扩展激活/禁用/停止
扩展名active
,disabled
和stopped
可以在负载均衡器映射规则中使用,以将负载均衡器的选定成员设置为特殊的激活状态。
# Stop forwarding only for member1 of loadbalancer
/myapp=myloadbalancer;stopped=member1
多个成员必须用逗号或空格分隔:
# Stop forwarding for member01 and member02 of loadbalancer
# Disable forwarding for member21 and member22 of loadbalancer
/myapp=myloadbalancer;stopped=member01,member02;disabled=member21,member22
有关激活状态的确切含义,请参见激活说明 。
扩展fail_on_status
该扩展名fail_on_status
可以在任何规则中使用:
# Send 503 instead of 404 and 500,
# and if we get a 503 also set the worker to error
/myapp=myworker;fail_on_status=-404,-500,503
多个状态代码必须用逗号分隔。有关属性的确切含义,请参见fail_on_status的描述 。
扩展use_server_errors
该扩展use_server_errors
允许让Web服务器发送错误页面,而不是后端(例如Tomcat)错误页面。如果要发送自定义的错误页面,但这些错误页面不是所有Web应用程序的一部分,则此功能很有用。然后可以将它们放到Web服务器上。
的值为use_server_errors
正数。发送到后端的任何请求,如果返回的HTTP状态代码均大于或等于http状态代码use_server_errors
,则将使用Web服务器针对该状态代码的错误页面将其答复给客户端。
# Use web server error page for all errors
/myapp=myworker;use_server_errors=400
# Use web server error page only for technical errors
/myotherapp=myworker;use_server_errors=500
控制负载均衡器粘性的扩展
扩展名
session_cookie
session_path
set_session_cookie
session_cookie_path
允许定义每个安装使用相同名称的负载均衡器工作器属性。请参阅worker.properties配置参考中的描述 。
处理请求时,tomcat连接器将检查uriworkermap文件的文件修改时间。为了保持较低的性能损失,只有在上一次检查至少在n秒钟前发生时,才会发生这种情况。
对于Apache HTTP Server,可以使用指令JkMountFileReload配置间隔“ n”,对于Microsoft IIS,可以使用worker_mount_reload属性。默认值为60秒。值为“ 0”将关闭重新加载。
如果文件更改,它将完全重新加载。如果存在除uriworkermap文件以外的其他规则(例如,worker.properties的mount属性或Apache HTTP Server的JkMount),则新的uriworkermap文件将与这些规则动态合并,就像在重新启动Web服务器时一样。
在1.2.19版之前,重新加载的行为略有不同:它不断将uriworkermap文件的全部内容添加到规则映射中。通过在新文件中将规则定义为禁用,合并规则被消除,重复的规则被消除,旧规则可以被禁用。规则从未删除。
状态工作器的配置视图还显示了各种映射规则。在每个工作人员进行配置之后,列出了转发给该工作人员的规则。该列表包含四列:
- 虚拟服务器的名称
- URI模式,前缀为“-”表示禁用的模式,“!” 排除模式
- 规则的类型:完全或通配符
- 以及规则定义的来源:worker.properties文件(装载属性)的“ worker definition”,Apache HTTP Server JkMount及其亲属的“ JkMount”,以及uriworkermap文件的“ uriworkermap”。
注意:从版本1.2.26开始,以下限制已被删除。
对于Apache HTTP Server,有一个重要的细微之处:转到状态工作程序的请求在某些服务器(主服务器或虚拟服务器)的上下文中执行。状态工作器将仅显示为此服务器(主服务器或虚拟服务器)定义的映射规则。
在1.2.25版之前,该列表包含三列:
- 规则的类型:“精确”或“通配符”,最终以“已禁用”或“卸载”为前缀(对于排除规则)
- URI模式
- 以及规则定义的来源:worker.properties文件(装载属性)的“ worker definition”,Apache HTTP Server JkMount及其亲属的“ JkMount”,以及uriworkermap文件的“ uriworkermap”。