|
|
|
||||||||||||||
|
|
|
Apache HTTP服务器 2.0版本 ![]() Apache的环境变量Apache HTTP服务器提供了一个机制, 可以把信息存储在叫做环境变量的命名变量中。 这个信息将用于进行日志记录和访问控制之类的控制操作。 此外,还会作为一个和诸如CGI脚本这样的外部程序进行沟通的机制。 本文档讨论了操作和使用这些变量的不同方法。 尽管这些变量也被称作环境变量, 但它们和底层由操作系统控制的环境变量不能混为一谈。 这些变量仅在Apache内部被存储和操纵。 它们仅当被提供给外部CGI脚本和服务器端包含脚本时, 才会变成真正的操作系统环境变量。 如果你想操作作为服务器运行基础的操作系统的环境变量, 你必须使用由你的操作系统外壳提供的标准环境操作机制。 设定环境变量
基本环境变量的操作设定Apache下环境变量的一个最普通方法,
就是使用没有什么限制的 随请求而变的条件设定为了具有额外的缩扩性,mod_setenvif提供的指令允许针对每个请求,
对特殊请求的特性进行环境变量的设定。比如,
可以仅在一个特定的浏览器(User-Agent)进行请求时,
或仅在一个特定的提交头[sic]被发现时进行环境变量的设置。
如果使用了mod_rewrite的 唯一标识符最后,mod_unique_id将为每个请求设定环境变量 标准CGI变量在所有Apache配置中的环境变量和由操作系统外壳传来的环境变量之外, 还有一组环境变量用以提供CGI脚本和SSI页面。此套变量包含由CGI规范要求的请求的元信息。 一些提示
使用环境变量
CGI脚本环境变量的最主要用途之一就是把信息传递给CGI脚本。如上所述, 在Apache配置中环境变量以外,还有一组包含请求相关的标准元信息的环境变量传给了CGI脚本。 更多细节请参见CGI教程。 SSI页面由mod_include的 访问控制可以用 条件日志记录环境变量能用 条件回应头
外部过滤器的激活用 URL重写
用于特殊目的的环境变量在针对特定客户端的处理中,因为互用性的问题,产生了一套修正Apache行为的机制。
为了使这些机制尽量的灵活,它们将会因为环境变量而激活。
比如,典型的示例有 downgrade-1.0它将强制把请求当作一个HTTP/1.0的请求来处理,不管这个请求是不是符合更新的标准。 force-no-vary此变量将在送回到客户端之前删除所有的 force-response-1.0此变量设定后将强制进行HTTP/1.0的回应。它的实现源于一个AOL的代理产生的问题。 一些客户端在收到HTTP/1.1的回应后会有不正常的举动。而此变量能够解决这一问题。 gzip-only-text/html当此变量的值被设为“1”,这个变量将禁用 no-gzip如果设置了此变量,
nokeepalive如果设置了此变量, redirect-carefully此变量将使服务器在对客户端发送重定向命令时更加小心。 典型应用于已知客户端处理重定向指令存在问题时。 它的实现源于微软的WebFolders软件存在的一个问题。 它在经由DAV方法在目录资源上处理重定向命令时会有问题。 suppress-error-charset存在于2.0.40后的版本中 当Apache针对用户请求回应了一个重定向命令的时候,这个回应中包含了一些文字。 这些文字将在客户端不能(或没有)自动执行重定向操作的情况下显示。 Apache会将这段文字按照它所使用的字符集进行编排,一般来说是ISO-8859-1。 然而,如果重定向的目的页面使用了不同的字符集, 一些有问题的浏览器版本会使用重定向命令文本的字符集,而不是采用目的页面的。 比如,希腊文就不会被正确的显示。 此环境变量的设定将使Apache忽略重定向命令文本的字符集设置, 那么这些有问题的浏览器就会正确的使用目的页的字符集。 示例针对表现不正当的客户端改变协议的行为我们建议将以下示例包含到你的httpd.conf中以解决一些已知的客户端问题。 # # The following directives modify normal HTTP response behavior. # The first directive disables keepalive for Netscape 2.x and browsers that # spoof it. There are known problems with these browser implementations. # The second directive is for Microsoft Internet Explorer 4.0b2 # which has a broken HTTP/1.1 implementation and does not properly # support keepalive when it is used on 301 or 302 (redirect) responses. # BrowserMatch "Mozilla/2" nokeepalive BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0 # # The following directive disables HTTP/1.1 responses to browsers which # are in violation of the HTTP/1.0 spec by not being able to grok a # basic 1.1 response. # BrowserMatch "RealPlayer 4\.0" force-response-1.0 BrowserMatch "Java/1\.0" force-response-1.0 BrowserMatch "JDK/1\.0" force-response-1.0 不要在访问日志中记录对图片的请求本示例将避免对图片的请求出现在访问日志中。 你可以随便改改就将它用于避免特定目录或特定主机的请求被记入日志。 SetEnvIf Request_URI \.gif image-request SetEnvIf Request_URI \.jpg image-request SetEnvIf Request_URI \.png image-request CustomLog logs/access_log common env=!image-request 阻止“图片大盗”本示例展示了如何避免不在你服务器上的人在他们的站点中直接链接使用你服务器上的图片。 这不是一个推荐的配置,但它能在有限的环境中加以应用。 我们假设你所有的图片都在/web/images目录下。 SetEnvIf Referer "^http://www.example.com/" local_referal # Allow browsers that do not send Referer info SetEnvIf Referer "^$" local_referal <Directory /web/images> Order Deny,Allow Deny from all Allow from env=local_referal </Directory> 想得知此技术的更多信息,请参阅“今日Apache教程”的 《保护你的图片不为人所用》。 |
| 自动支持 1024x768 和 800x600 最佳页面显示效果, 请使用IE4.0以上浏览器浏览本站
| |||||||||||
|