文档章节

Adobe CQ5 __Dispatcher

_Eddy
 _Eddy
发布于 2014/11/12 10:13
字数 2867
阅读 159
收藏 0

1. dispatcher作用

通过web服务器达到页面缓存和负载均衡的作用

2.配置dispatcher流程##

  1. 安装web服务器
  2. 下载对应环境和web服务器版本的dispatcher版本
  3. 将dispatcher解压,将dispatcher conf文件和dispatcher module文件移入web服务器
  4. 配置服务器conf文件和dispatcher.any文件,将dispatcher和web服务器进行整合;如图: 在此输入图片描述 另外可参见: How to Use the Adobe CQ5 Dispatcher 配置步骤

3. 配置dispatcher具体步骤

<h3> 3.1 window配置dispatcher </h3> <h4>3.1.1 安装web服务器 </h4> window下安装apache服务器,`httpd-2.2.25-win32-x86-no_ssl.msi`,一直下一步,如果遇到如图提示: ![在此输入图片描述][3]<br/> 查找得知出现此异常的原因是80端口号被占用 解决方法: 修改apache默认端口号(关闭占用80端口号的进程) 在apache安装目录下的conf文件夹下找到httpd.conf文件,将Listener端口号由原来的80改为81。

<h4>3.1.2 下载dispatcher</h4> 访问package share页面,登陆进入,搜索框搜索dispatcher,然后根据自己的web服务器版本选择对应版本的dispatcher,下载。`dispatcher-apache2.2-windows-x86-4.1.0.zip`

<h4>3.1.3 dispatcher与apache整合</h4> 1. 解压dispatcher,将module文件夹下的`disp_apache2.2.dll`拷贝至apache安装目录下的module目录下; 将coonf文件夹下的`dispatcher.any`拷贝至apache安装目录下的conf目录下。 2. 修改apache的conf文件,httpd.conf。使apache服务器启动时也会把dispatcher启动。<br/> 添加配置如下:在loadModule末尾引入dispatcher.any,如下图: ![在此输入图片描述][4] 将directory配置区域修改如下: ![在此输入图片描述!][5]<br/> 之后重启apache服务器,启动正常且apache安装目录下的logs文件夹下出现dispatcher.log日志文件,则dispatcher 与apache初步整合成功,如图。 ![在此输入图片描述][6]

<h4>3.1.4 dispatcher.any配置</h4> 配置dispatcher.any,指定缓存路径,缓存保存位置等,参数详解: <h5> /farms</h5> /farms块定义一系列的farms或者websites。每个/farms块定义了:<br/> * 多个publish instance的负载均衡 /renderers <br/> * 定义publish instance的ip和端口号,缓存数据来源 <br/> * 更多的特性,包括缓存文件的存放位置,具体缓存哪些东西等 <br/> 注:如果dispatcher配置文件过大,可以分割成几个小的配置文件来引入,如下: /farms { $include "myFarm.any" } <h6> /website</h6> <h6> /clientheaders </h6> /clientheaders块定义了一系列从客户端client到CQ instance的http headers请求头.默认情况下CQ Dispatcher转发 标准的HTTP 请求头至CQ instance。在一些instances中,你可能需要:<br/> * 添加headers : 如自定义请求头 * 移除headers:如与web服务器有关的认证headers,例子如下: ![在此输入图片描述][7] 当然,也可以直接定义转发所有请求头: /clientheaders { "*" } <h6> /virtualhosts </h6> virtualhosts块定义了dispatcher从网页端接受的hostname/URI的列表集合,也可以直接用"*"通配符来匹配所有。 <h6> /renders /rend01 /hostname, /port, /timeout</h6> renders块定义了CQ Dispatcher接受的publish instance的主机名和端口号,配置多个publish instance可以达到 负载均衡的效果,如下: # The load will be balanced among these render instances /renders { /rend01 { # Hostname or IP of the render /hostname "localhost" # Port of the render /port "4502" # Connect timeout in milliseconds, 0 to wait indefinitely # /timeout "0" } /rend02 { /hostname "121.40.140.2" /port "4502" # /timeout "0" } } <h6> /filter</h6> filter块可以尽可能的限制外部访客可以访问的路径,下图演示:先限制所有可用路径,然后 对外部访客可访问的元素加以配置; # The filter section defines the requests that should be handled by the dispatcher. # The globs will be compared against the request line, e.g. "GET /index.html HTTP/1.1". /filter { # Deny everything first and then allow specific entries /0001 { /type "deny" /glob "*" }

      # Open consoles
      # /0011 { /type "allow" /glob "* /admin/*"  }  # allow servlet engine admin
      # /0012 { /type "allow" /glob "* /crx/*"    }  # allow content repository
      # /0013 { /type "allow" /glob "* /system/*" }  # allow OSGi console
        
      # Allow non-public content directories
      /0021 { /type "allow" /glob "* /apps/*"   }  # allow apps access
      /0022 { /type "allow" /glob "* /bin/*"    }
      /0023 { /type "allow" /glob "* /content*" }  # disable this rule to allow mapped content only
      
      /0024 { /type "allow" /glob "* /libs/*"   }
      # /0025 { /type "deny"  /glob "* /libs/shindig/proxy*" } # if you enable /libs close access to proxy

      /0026 { /type "allow" /glob "* /home/*"   }
      /0027 { /type "allow" /glob "* /tmp/*"    }
      /0028 { /type "allow" /glob "* /var/*"    }

      # Enable specific mime types in non-public content directories 
      /0041 { /type "allow" /glob "* *.css *"   }  # enable css
      /0042 { /type "allow" /glob "* *.gif *"   }  # enable gifs
      /0043 { /type "allow" /glob "* *.ico *"   }  # enable icos
      /0044 { /type "allow" /glob "* *.js *"    }  # enable javascript
      /0045 { /type "allow" /glob "* *.png *"   }  # enable png
      /0046 { /type "allow" /glob "* *.swf *"   }  # enable flash
      /0047 { /type "allow" /glob "* *.jpg *"   }  # enable jpg
      /0048 { /type "allow" /glob "* *.jpeg *"  }  # enable jpeg

      # Enable features 
      /0062 { /type "allow" /glob "* /libs/cq/personalization/*"  }  # enable personalization

      # Deny content grabbing
      /0081 { /type "deny"  /glob "GET *.infinity.json*" }
      /0082 { /type "deny"  /glob "GET *.tidy.json*"     }
      /0083 { /type "deny"  /glob "GET *.sysview.xml*"   }
      /0084 { /type "deny"  /glob "GET *.docview.json*"  }
      /0085 { /type "deny"  /glob "GET *.docview.xml*"  }
      
      /0086 { /type "deny"  /glob "GET *.*[0-9].json*" }
      # /0087 { /type "allow" /glob "GET *.1.json*" }          # allow one-level json requests

      # Deny query
      /0090 { /type "deny"  /glob "* *.query.json*" }
      }

Adobe推荐/libs,/etc,/crx,/admin,/var,/tmp,/home,/apps和其它的一些URIS都不能被外部访问。

<h6>/cache</h6> chche块指定了Dispatcher缓存文件的位置和规则等,包括的参数有 1. /docroot: 指定服务器缓存的根目录,也是缓存文件所存放的目录:e.g /docroot "C:/Program Files (x86)/Apache Software Foundation/Apache2.2/htdocs" 2. /statfile /statfileslevel定义当页面被激活时网站树中的那一部分是不可用的 注:你可能会用到/statfile或者/statfilelevel,但是不能两者都有! e.g # Sets the level upto which files named ".stat" will be created in the # document root of the webserver. When an activation request for some # page is received, only files within the same subtree are affected # by the invalidation. /statfileslevel "2" 3. /allowAuthorized 定义是否缓存请求中的认证证书,授权信息, 一般情况下是不会缓存带有认证头部的页面的,可以指定allowAuthorized属性来缓存认证授权信息e.g # Flag indicating whether to cache responses to requests that contain # authorization information. /allowAuthorized "0" 4. /rules 定义缓存哪些页面,要缓存页面的规则 需要注意的是一些页面永远不会被缓存: * 如果http方法是get请求 * 另外一些包含post请求的form表单 * 动态的页面,例如搜索结果也不会被缓存 * 请求URL中包含“?” * 请求头包含认证信息(这个可以配置) * URL需要扩展名来决定文档类型 .e.g /rules { /0000 { # the globbing pattern to be compared against the url # example: * -> everything # : /foo/bar.* -> only the /foo/bar documents # : /foo/bar/* -> all pages below /foo/bar # : /foo/bar[./]* -> all pages below and /foo/bar itself # : *.html -> all .html files /glob "*" /type "allow" } /0001 { # the globbing pattern to be compared against the url # example: * -> everything # : /foo/bar.* -> only the /foo/bar documents # : /foo/bar/* -> all pages below /foo/bar # : /foo/bar[./]* -> all pages below and /foo/bar itself # : *.html -> all .html files /glob "/en/news" /type "allow" } /0002 { # the globbing pattern to be compared against the url # example: * -> everything # : /foo/bar.* -> only the /foo/bar documents # : /foo/bar/* -> all pages below /foo/bar # : /foo/bar[./]* -> all pages below and /foo/bar itself # : *.html -> all .html files /glob "*/private/*" /type "allow" } /0003 { ..... } .... } 5. /invalidate: 定义content修改后服务器缓存中的相关无效资源和页面,(服务器会重新缓存该文件和文件夹) # The invalidate section defines the pages that are "invalidated" after # any activation. Please note that the activated page itself and all # related documents are flushed on an modification. For example: if the # page /foo/bar is activated, all /foo/bar.* files are removed from the # cache. /invalidate { /0000 { /glob "*" /type "deny" } /0001 { # Consider all HTML files stale after an activation. /glob "*.html" /type "allow" } /0002 { /glob "*.zip" /type "allow" } /0003 { /glob "*.pdf" /type "allow" } } <h4> 3.2 实验版dispatcher.any详细配置</h4> # Each farm configures a set of load balanced renders (i.e. remote servers) /farms { # First farm entry /website { # Request headers that should be forwarded to the remote server. /clientheaders { # Forward all request headers that are end-to-end. If you want # to forward a specific set of headers, you'll have to list # them here. "*"

              }
              
            # Hostname globbing for farm selection (virtual domain addressing)
            /virtualhosts
              {
              # Entries will be compared against the "Host" request header
              # and an optional request URL prefix.
              #
              # Examples:
              #
              #   www.company.com
              #   intranet.*
              #   myhost:8888/mysite
              "*"
              }
              
            # The load will be balanced among these render instances
            /renders
              {
              /rend01
                {
                # Hostname or IP of the render
                /hostname "localhost"
                # Port of the render
                /port "4502"
                # Connect timeout in milliseconds, 0 to wait indefinitely
                # /timeout "0"
                }
        	  /rend02
                {
                /hostname "121.40.140.2"
                /port "4502"
                # /timeout "0"
                }
        	  /rend03
                {
                /hostname "121.40.140.2"
                /port "4503"
                /timeout "0"
                }
              }
        	  
        	  
              
            # The filter section defines the requests that should be handled by the dispatcher.
            # The globs will be compared against the request line, e.g. "GET /index.html HTTP/1.1".
            /filter
              {
              # Deny everything first and then allow specific entries
              /0001 { /type "deny"  /glob "*" }
                
              # Open consoles
        #     /0011 { /type "allow" /glob "* /admin/*"  }  # allow servlet engine admin
        #     /0012 { /type "allow" /glob "* /crx/*"    }  # allow content repository
        #     /0013 { /type "allow" /glob "* /system/*" }  # allow OSGi console
                
              # Allow non-public content directories
              /0021 { /type "allow" /glob "* /apps/*"   }  # allow apps access
              /0022 { /type "allow" /glob "* /bin/*"    }
              /0023 { /type "allow" /glob "* /content*" }  # disable this rule to allow mapped content only
              
              /0024 { /type "allow" /glob "* /libs/*"   }
        #     /0025 { /type "deny"  /glob "* /libs/shindig/proxy*" } # if you enable /libs close access to proxy
        
              /0026 { /type "allow" /glob "* /home/*"   }
              /0027 { /type "allow" /glob "* /tmp/*"    }
              /0028 { /type "allow" /glob "* /var/*"    }
        
              # Enable specific mime types in non-public content directories 
              /0041 { /type "allow" /glob "* *.css *"   }  # enable css
              /0042 { /type "allow" /glob "* *.gif *"   }  # enable gifs
              /0043 { /type "allow" /glob "* *.ico *"   }  # enable icos
              /0044 { /type "allow" /glob "* *.js *"    }  # enable javascript
              /0045 { /type "allow" /glob "* *.png *"   }  # enable png
              /0046 { /type "allow" /glob "* *.swf *"   }  # enable flash
              /0047 { /type "allow" /glob "* *.jpg *"   }  # enable jpg
              /0048 { /type "allow" /glob "* *.jpeg *"  }  # enable jpeg
        
              # Enable features 
              /0062 { /type "allow" /glob "* /libs/cq/personalization/*"  }  # enable personalization
        
              # Deny content grabbing
              /0081 { /type "deny"  /glob "GET *.infinity.json*" }
              /0082 { /type "deny"  /glob "GET *.tidy.json*"     }
              /0083 { /type "deny"  /glob "GET *.sysview.xml*"   }
              /0084 { /type "deny"  /glob "GET *.docview.json*"  }
              /0085 { /type "deny"  /glob "GET *.docview.xml*"  }
              
              /0086 { /type "deny"  /glob "GET *.*[0-9].json*" }
        #     /0087 { /type "allow" /glob "GET *.1.json*" }          # allow one-level json requests
        
              # Deny query
              /0090 { /type "deny"  /glob "* *.query.json*" }
              }
        
            # The cache section regulates what responses will be cached and where.
            /cache
              {
              # The docroot must be equal to the document root of the webserver. The
              # dispatcher will store files relative to this directory and subsequent
              # requests may be "declined" by the dispatcher, allowing the webserver
              # to deliver them just like static files.
        	  # /docroot "<Apache_document_root>"
        	  # /docroot "G:/aaa"
              /docroot "C:/Program Files (x86)/Apache Software Foundation/Apache2.2/htdocs"
        	
        	  
              # Sets the level upto which files named ".stat" will be created in the 
              # document root of the webserver. When an activation request for some 
              # page is received, only files within the same subtree are affected 
              # by the invalidation.
              /statfileslevel "2"
              
              # Flag indicating whether to cache responses to requests that contain
              # authorization information.
              /allowAuthorized "0"
              
              # Flag indicating whether the dispatcher should serve stale content if
              # no remote server is available.
              #/serveStaleOnError "0"
              
              # The rules section defines what responses should be cached based on
              # the requested URL. Please note that only the following requests can
              # lead to cacheable responses:
              #
              # - HTTP method is GET
              # - URL has an extension
              # - Request has no query string
              # - Request has no "Authorization" header (unless allowAuthorized is 1)
              /rules
                {
                /0000
                  {
                  # the globbing pattern to be compared against the url
                  # example: *             -> everything
                  #        : /foo/bar.*    -> only the /foo/bar documents
                  #        : /foo/bar/*    -> all pages below /foo/bar
                  #        : /foo/bar[./]* -> all pages below and /foo/bar itself
                  #        : *.html        -> all .html files
                  /glob "*"
                  /type "allow"
                  }
        		/0001
                  {
                  # the globbing pattern to be compared against the url
                  # example: *             -> everything
                  #        : /foo/bar.*    -> only the /foo/bar documents
                  #        : /foo/bar/*    -> all pages below /foo/bar
                  #        : /foo/bar[./]* -> all pages below and /foo/bar itself
                  #        : *.html        -> all .html files
                  /glob "/en/news"
                  /type "allow"
                  }
        		/0002
                  {
                  # the globbing pattern to be compared against the url
                  # example: *             -> everything
                  #        : /foo/bar.*    -> only the /foo/bar documents
                  #        : /foo/bar/*    -> all pages below /foo/bar
                  #        : /foo/bar[./]* -> all pages below and /foo/bar itself
                  #        : *.html        -> all .html files
                  /glob "*/private/*"
                  /type "allow"
                  }
        		/0003
                  {
                  # the globbing pattern to be compared against the url
                  # example: *             -> everything
                  #        : /foo/bar.*    -> only the /foo/bar documents
                  #        : /foo/bar/*    -> all pages below /foo/bar
                  #        : /foo/bar[./]* -> all pages below and /foo/bar itself
                  #        : *.html        -> all .html files
                  /glob "*/private/*"
                  /type "allow"
                  }
        		/0004
                  {
                  /glob "*/content/*"
                  /type "allow"
                  }
        		/0005
                  {
                  /glob "*/var/*"
                  /type "allow"
                  }
        		/0006
                  {
                  /glob "*/system/*"
                  /type "allow"
                  }
                }
                
              # The invalidate section defines the pages that are "invalidated" after
              # any activation. Please note that the activated page itself and all 
              # related documents are flushed on an modification. For example: if the 
              # page /foo/bar is activated, all /foo/bar.* files are removed from the
              # cache.
              /invalidate
                {
                /0000
                  {
                  /glob "*"
                  /type "deny"
                  }
                /0001
                  {
                  # Consider all HTML files stale after an activation.
                  /glob "*.html"
                  /type "allow"
                  }
                /0002
                  {
                  /glob "*.zip"
                  /type "allow"
                  }
                /0003
                  {
                  /glob "*.pdf"
                  /type "allow"
                  }
                }
        
              # The allowedClients section restricts the client IP addresses that are
              # allowed to issue activation requests.
              /allowedClients
                {
                # Uncomment the following to restrict activation requests to originate
                # from "localhost" only.
                #
                #/0000
                #  {
                #  /glob "*"
                #  /type "deny"
                #  }
                #/0001
                #  {
                #  /glob "127.0.0.1"
                #  /type "allow"
                #  }
                }
                
              # The ignoreUrlParams section contains query string parameter names that
              # should be ignored when determining whether some request's output can be
              # cached or delivered from cache.
              #
              # In this example configuration, the "q" parameter will be ignored. 
              /ignoreUrlParams
        		  {
        			  /0001 { /glob "*" /type "allow" }
        			  /0002 { /glob "q" /type "allow" }
        		  }
              
              }
              
            # The statistics sections dictates how the load should be balanced among the
            # renders according to the media-type. 
            /statistics
              {
              /categories
                {
                /html
                  {
                  /glob "*.html"
                  }
                /others
                  {
                  /glob "*"
                  }
                }
              }
            }
          }

此时就可以通过本机web服务器访问启动的instance上的一些页面了。

4. 最后一步,配置Dispatcher Flush Agent

1. 虽然是为publish instance配制dispatcher,进行缓存,但配制是在author instance上的。 进入author instance的Tools页面,切换至Replication------------->Agents on publish ---------------->Dispatcher Flush页面,重新拷贝一份,如图 在此输入图片描述 2. 进入拷贝的Dispatcher Flush页面,点击Edit进入设置页面, Settings tab设置dispatcher Flush的名称Name,描述Description,设置启动开关Enabled Transport tab设置URI ,我本机apache为http://localhost:81/dispatcher/invalidate.cache,点击OK. 在此输入图片描述 至此,window下dispatcher已经全部配置完成。

5. 后记

apache服务器安装时记得在httpd.conf文件内修改默认端口号Listener; dispatcher.any配置时记得配置renders,设置ip和端口号port,用来指定扫描的instance

© 著作权归作者所有

共有 人打赏支持
下一篇: web develop note
_Eddy
粉丝 5
博文 38
码字总数 16825
作品 0
杭州
程序员
私信 提问
Servlet Filter in OSGi enabled web application

Servlet filters are an important component of web application and it can be used in different scenarios, e.g.: 1) Authenticating requests (ServletRequest) before delegating them......

银月光海
2015/11/27
55
0
使用Adobe CQ5的人多吗?

CQ5 (AEM)作为一个后台CMS,功能还是非常强大的,开发的难度也不大。所以在英国,基于这个平台的项目越来越多。但是好像国内知道的人不是特别多 。所以想在这里问问大家,国内这方面的工作...

Zel
2014/02/04
2.4K
6
Servlet Filter not working for Filter on Reques...

You had to add <dispatcher>REQUEST</dispatcher> <dispatcher>FORWARD</dispatcher> to My Filter mapping, which now looks like <filter-mapping> <filter-name>VJFilterTest</filter-na......

zuoer
2012/02/06
0
0
FlashBuilder启动报错

FlashBuilder安装后就一直启动没反应,在安装目录下找到一个报错的日志文件 hs_err_pid15008.log 从日志看来FB启动用的JRE是好像是JRE1.6的,而本人系统中目前安装的是JRE1.8的。 求大神们指...

冰玉
2015/11/21
845
2
Phalcon7 增加逻辑处理类

拥有方法: 、、、以及静态方法: 通过设定 既可以通过设置控制方法的参数来实例化逻辑类。

朱宗鑫1
2016/11/03
33
0

没有更多内容

加载失败,请刷新页面

加载更多

2018年终盘点:区块链真的结束了吗?

2018 年,大家依旧期待区块链出现“杀手级”应用,然而到了年关,终究还是没有。既然没有出现,只能认为“神功”尚未练成,但是这一年也没有虚度,让大家再一次领教了这个领域的跌宕起伏。 ...

酒逢知己千杯少
8分钟前
0
0
社交软件系统ThinkSNS+默认配置信息说明

感谢大家一直以来对社交软件系统ThinkSNS的关注,ThinkSNS Plus社交系统一直在不断优化完善。ThinkSNS Plus 本次于2018年12月3日更新发布。 本次重要更新说明如下: 1.优化默认配置信息,服务...

ThinkSNS账号
9分钟前
1
0
阿里云文件存储(NAS)助力业务系统承载双十一尖峰流量

2018天猫双11全球狂欢节,全天成交额再次刷新纪录达到2135亿元,其中总成交额在开场后仅仅用了2分05秒即突破100亿元,峰值的交易量达到惊人的高度,背后离不开阿里云大数据计算和存储能力的支...

阿里云官方博客
11分钟前
1
0
Frost & Sullivan权威报告:阿里云再次领跑云WAF大中华区市场

近日,国际权威分析机构Frost & Sullivan 针对Web应用防火墙(简称“WAF”)领域发布了《2017年亚太区Web应用防火墙市场报告》,阿里云以市场占有率45.8%的绝对优势连续两年领跑大中华区云WAF...

阿里云云栖社区
11分钟前
1
0
Axios使用拦截器全局处理请求重试

Axios拦截器 Axios提供了拦截器的接口,让我们能够全局处理请求和响应。Axios拦截器会在Promise的then和catch调用前拦截到。 请求拦截示例 axios.interceptors.request.use(function (conf...

kisshua
15分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部