haproxy使用时的小注意--by{流芒}-{土豆}

aproxy的errorloc不支持404错误的处理,需要到到后端的web服务器如nginx或者apache那里进行处理:
如果nginx的话:
error_page 404 /sorry.html;

haproxy增加errorloc的处理时,需要注意路径问题

errorloc 403 http://127.0.0.1:8081/sorry.html

errorloc 403 http://www.example.com/sorry.html

Apache:

ErrorDocument 指令
说明:     定义了当遇到错误的时候服务器将给客户端什么样的回应
语法:     ErrorDocument 错误代码文档
上下文:     服务器配置, 虚拟主机, 目录, .htaccess
覆盖项:     FileInfo
状态:     核心
模块:     core
兼容性:     在Apache 2.0中引用文字的语法有了不同

当遇到问题或错误的时候,Apache能被配置为进行以下四种处理之一:

1. 输出一个简单生硬的错误代码信息
2. 输出一个经过配置的信息
3. 转向一个本地的URL-path来处理这个问题(错误)
4. 转向一个外部的URL来处理这个问题(错误)

默认会采取第一种方法,而第2-4种可以使用ErrorDocument指令后面跟随一个HTTP回应代码和一个URL或信息来进行配置。Apache有时会额外提供一些信息来描述所发生的问题/错误。

URL可以由一个斜杠(/)开头来指示一个本地的URL,或是提供一个能被客户端解释的完整的URL。此外还能提供一个可以被浏览器显示的消息。比如说:

ErrorDocument 500 http://foo.example.com/cgi-bin/tester
ErrorDocument 404 /cgi-bin/bad_urls.pl
ErrorDocument 401 /subscription_info.html
ErrorDocument 403 “Sorry can’t allow you access today”

请注意,如果您为ErrorDocument指定了一个外部的URL(比如说,任何在开头指示了类似“http”这样的访问方法的字串),Apache将会向客户端发送一个转向指令来告诉它在哪里找到这个文档,哪怕这个文档最后还是在这个服务器上。这里面包含着一些暗示:最重要的就是客户端无法接收到一个原始的错误状态代码,取而代之的是一个转向状态代码。这将会使一些用状态代码来判断一个URL是否有效的web机器人或其它客户端产生误解。另外,如果您在ErrorDocument 401中使用了外部URL,客户端将不会提示用户输入密码,因为它根本没收到这样一个401的状态代码。所以,如果您想使用“ErrorDocument 401”指令,它必须指向一个本地的文档。

Microsoft Internet Explorer (MSIE)在服务器端产生的错误信息“很小”的时候会忽略它们而用自己的“友好的”错误信息进行取代。这个大小的阈值根据错误类型而不同。但一般来说,如果您使您的错误文档的大小在512byte以上,MSIE就会显示这些服务器端产生的错误文档而不会屏蔽它们。


Tags:

Post a Comment


最热门文章

常用标签

云输入法 好的站点 数据之美 数据库优化 网站优化 网页安全 跨浏览器 输入法 重构 页面优化 Android CSS css优化 facebook firebug HTML html重构 html5 HTTP协议 http历史 ie javascript Last Modified lighttpd linux linux后台开发 MYSQL mysql优化 netstat ping QQ QQ云输入法 QQWeb输入法 web web开发 Web服务器 web服务器配置 web设计 WEB颜色 xhtml