uriworkermap.properties配置
Posted wzihan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了uriworkermap.properties配置相关的知识,希望对你有一定的参考价值。
uriworkermap.properties配置
介绍
通过定义映射规则,可以配置从Web服务器到tomcat的请求转发。这样的规则将请求映射到工人。映射的请求部分由URI模式描述,工作器由其工作者名称描述。
所谓的uriworkermap文件是一种定义规则的机制,该规则适用于所有Web服务器。还有其他用于定义规则的Web服务器特定的配置选项,将在参考页上主要讨论如何为各个Web服务器配置tomcat连接器。
该文件的名称通常为uriworkermap.properties,尽管可以在Web服务器中对其进行配置。请查阅Web服务器特定的文档页面,以了解如何启用uriworkermap文件。
uriworkermap文件支持的主要功能是
- 支持规则文件中的注释。
- 完全匹配和通配符匹配,用于映射目录以及所有内容的快捷方式。
- 排除规则,禁用规则和规则优先级。
- 规则扩展,可按规则修改工作人员行为。
- 虚拟主机集成:uri映射规则可以表示每个虚拟主机。尽管详细信息是特定于Web服务器的。
- 动态重新加载:定期检查文件是否有更改。新版本将自动重新加载,而无需重新启动Web服务器。
- 与状态工作者集成。
句法
行格式
该文件具有基于行的格式。没有连续字符,因此每个规则都需要在一行上定义。每个规则都是一对,由URI模式和工作人员名称组成,并以等号‘=‘组合:
/myapp=myworker
注释,空格
字符“#”之后的所有文本(包括字符“#”)都将被忽略,并可用于注释。前导和尾随空格在URI模式以及工作人员名称周围进行了修剪。以下定义都是等效的:
# This is a white space example
/myapp=myworker
/myapp=myworker
/myapp = myworker
URI模式
在URI模式中,可以使用三个特殊字符‘*‘,‘?‘ 和‘|‘。字符“ *”是通配符,可与URI中的任意数量的任意字符“?”匹配 完全匹配一个字符。每个URI模式都必须以字符‘/‘开头,或者以‘*‘或‘?‘开头,还可以选择以修饰符‘!‘的任意组合作为前缀。和“-”(请参阅??下一节)。
# Mapping the URI /myapp1 and everything under /myapp1/:
/myapp1=myworker-a
/myapp1/*=myworker-a
# Mapping all URI which end with a common suffix:
*.jsp=myworker
*.do=myworker
# Mapping the URI /myapp1 and everything under /myapp1/:
/myapp1|/*=myworker-a
排除,禁用和优先
排除和禁用规则
排除规则允许定义URI规则中的排除条件,该规则会将请求转发给tomcat。如果排除规则匹配,则不会转发请求。Web服务器通常使用它来提供静态内容。规则以“!”为后缀是排除规则:
# Mapping the URI /myapp and everything under /myapp/:
/myapp|/*=myworker
# Exclude the subdirectory static:
!/myapp/static|/*=myworker
# Exclude some suffixes:
!*.html=myworker
# Mapping the webapps /myapp1 and /myapp2:
/myapp1|/*=myworker1
/myapp2|/*=myworker2
# Exclude the all subdirectories static for all workers:
!/*/static|/*=*
# Exclude some suffixes for all workers:
!*.html=*
如果您的Web服务器合并了来自各种来源的规则,并且您想禁用以前定义的任何规则,则规则禁用起作用。由于uriworkermap文件是动态重新加载的,因此您可以使用它暂时禁用请求转发:如果规则的后缀为‘-‘,则该规则将被禁用:
# We are not in maintenance.
# The maintenance rule got defined somewhere else.
-/*=maintenance
映射优先级
首先应用限制性最强的URI模式。更精确地,URI模式按模式中的‘/‘字符数排序(最高的数字在前),等号的规则按其字符串长度(最长的在前)排序。
如果两个区别仍然不能满足要求,则考虑规则的定义来源。首先是uriworkermap.properties中定义的规则,然后是JkMount(对于Apache HTTP Server)定义的规则,然后是使用mount属性在worker.properties内部的规则。
所有禁用的规则都将被忽略。在应用所有常规规则后,将应用排除规则。
对于以下配置冲突,没有定义的行为:在相同的定义源中使用相同的URI模式,但使用不同的工作程序目标。
规则扩展
规则扩展是在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
此扩展自版本1.2.33起可用。
扩展无状态
该扩展stateless
仅在使用基于会话的负载平衡时才有用。在这种情况下,通常将没有会话ID的任何请求都计为新会话。如果使用stateless
扩展名标记映射规则,则与映射规则匹配的请求将不算作新会话,即使它们没有会话ID。
# Don‘t let static content trash our session balancing
/myapp/static/*=myworker;stateless=1
扩展激活/禁用/停止
扩展名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
扩展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
虚拟主机集成
用于Microsoft IIS的ISAPI重定向器
当将ISAPI重定向器用于Microsoft IIS时,可以通过在URI模式前面加上虚拟主机信息来将单个规则限制为特殊的虚拟主机。规则是,URL必须以主机名作为前缀。
# Use www.foo.org as virtual host
/www.foo.org/myapp/*=myworker
# Use www.bar.org as virtual host
/www.bar.org/myapp/*=myworker
# Normal mapping
/mysecondapp/*=myworker
请注意,/ mysecondapp / *将映射到存在的所有虚拟主机。如果需要防止映射到某些特定虚拟主机,则必须使用排除规则
# Make sure the myapp is accessible by all virtual hosts
/myapp/*=myworker
# Disable mapping myapp for www.foo.org virtual host
!/www.foo.org/myapp/*=myworker
适用于Apache HTTP Server的mod_jk
对于Apache HTTP Server,您可以为每个虚拟主机定义单独的uriworkermap文件。指令JkMountFile可以在主服务器和每个虚拟主机中使用。如果虚拟主机不使用JkMountfile,但是JkMountCopy设置为“ On”,则它将从主服务器继承JkMountFile。如果您希望所有虚拟主机从主服务器继承安装,则可以在主服务器中将JkMountCopy设置为“全部”。
动态重装
处理请求时,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”。
参考资料:
http://tomcat.apache.org/connectors-doc/reference/uriworkermap.html
以上是关于uriworkermap.properties配置的主要内容,如果未能解决你的问题,请参考以下文章
(4.19)SQL server 2008一些常见配置之一(基本配置,权限配置远程访问配置和内存配置。)
Tomcat卷五---Web 应用配置,管理配置和JVM配置