<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # Apache的環境變量 Apache HTTP服務器提供了一個機制,可以把信息存儲在叫做_環境變量_(environment variable)的命名變量中。這個信息可以用于控制諸如日志記錄和訪問控制之類的操作。此外,還可以作為一個和諸如CGI腳本這樣的外部程序進行溝通的機制。本文檔討論了操作和使用這些變量的不同方法。 盡管這些變量也被稱作_環境變量_,但它們和底層的、由操作系統控制的環境變量不能混為一談。這些變量僅在Apache內部被存儲和操縱。僅當它們被提供給外部CGI腳本或服務器端包含腳本(SSI)時,才會變成真正的操作系統環境變量。如果你想操作作為服務器運行基礎的操作系統的環境變量,你必須使用由你的操作系統shell提供的標準環境操作機制。 ## 設置環境變量 相關模塊 * `mod_env` * `mod_rewrite` * `mod_setenvif` * `mod_unique_id` 相關指令 * `BrowserMatch` * `BrowserMatchNoCase` * `PassEnv` * `RewriteRule` * `SetEnv` * `SetEnvIf` * `SetEnvIfNoCase` * `UnsetEnv` ### 基本的環境變量操作 設置一個Apache環境變量最基本的方法,就是使用沒有什么限制的`SetEnv`指令。也可以使用`PassEnv`指令將啟動Apache的操作系統shell的環境變量傳進來。 ### 針對每個請求進行有條件的設定 為了具有額外的伸縮性,`mod_setenvif` 提供的指令允許針對每個請求特定的請求特性進行環境變量的設定。比如,可以僅在一個特定的瀏覽器(User-Agent)進行請求時,或僅在一個特定的"Referer:"頭被發現時進行環境變量的設置。如果使用`mod_rewrite`的`RewriteRule`指令中的 `[E=...]` 選項來進行環境變量的設置,還會具有更大伸縮性。 ### 唯一標識符 最后,`mod_unique_id`將為每個請求設定一個`UNIQUE_ID`環境變量的值,這個值對"所有"請求都是唯一的,即使在極為特定的條件下。 ### 標準CGI變量 除了所有Apache配置中的環境變量和由操作系統shell傳進來的環境變量之外,還有一組環境變量是提供給CGI腳本和SSI頁面的,此組環境變量包含由[CGI規范](http://cgi-spec.golux.com/)要求的與請求相關的元信息。 ### 一些告誡 * 用環境變量操作指令來覆蓋或修改標準的CGI變量是行不通的。 * 當用`suexec`來運行CGI腳本時,環境變量將會被清除到在CGI腳本運行之前只剩一組_安全_變量。_安全_變量的列表在編譯時由suexec.c定義。 * 出于可移植性的考慮,環境變量的命名必須僅包含字母、數字、下劃線。此外,第一個符號不能為數字。不符合此要求的字符將在傳遞給CGI腳本和SSI頁面時被下劃線取代。 ## 使用環境變量 相關模塊 * `mod_authz_host` * `mod_cgi` * `mod_ext_filter` * `mod_headers` * `mod_include` * `mod_log_config` * `mod_rewrite` 相關指令 * `Allow` * `CustomLog` * `Deny` * `ExtFilterDefine` * `Header` * `LogFormat` * `RewriteCond` * `RewriteRule` ### CGI腳本 環境變量的主要用途之一就是把信息傳遞給CGI腳本。如前所述,遞給CGI腳本的環境變量,除了在Apache配置中定義的以外,還包含一組與請求相關的標準元信息的環境變量。更多細節請參見[CGI教程](#calibre_link-215)。 ### SSI頁面 由mod_include的`INCLUDES`過濾器處理的服務器端解析(Server-parsed[SSI])文檔能夠用`echo`元素打印出環境變量,并能在流程控制元素中使用環境變量來基于請求特性而產生部分頁面。Apache當然也會將上述的標準CGI環境變量提供給SSI頁面。更多細節請參見[SSI教程](#calibre_link-267)。 ### 訪問控制 可以用 `allow from env=` 和 `deny from env=` 指令基于環境變量的值對服務器進行訪問控制。在結合了`SetEnvIf`之后,能更靈活的基于客戶端特性對服務器進行訪問控制。比如,你能用這些指令來拒絕一些特定瀏覽器(User-Agent)的訪問。 ### 條件日志記錄 可以用`LogFormat`的可選項"`%e`"將環境變量寫入訪問日志中。此外,還可以用`CustomLog`指令基于環境變量的狀態來決定是否將請求寫入日志。在結合了`SetEnvIf`之后,能更靈活的控制哪些請求將被記錄。比如,你可以選擇不對以`gif`為結尾的文件名請求進行記錄,或者選擇只記錄內網之外的客戶端請求。 ### 條件響應頭 `Header`指令能根據一個環境變量是否存在來決定是否將一個HTTP頭放入對客戶端的響應里。這將使諸如從客戶端收到特定的請求頭時返回特定的應答頭這樣的事情成為可能。 ### 外部過濾器的激活 由`mod_ext_filter`的`ExtFilterDefine`指令配置的外部過濾器可以用 `disableenv=` 和 `enableenv=` 選項根據環境變量的條件進行激活。 ### URL重寫 `RewriteCond`中形如 `%{ENV:...}` 的_TestString_允許mod_rewrite的重寫引擎以環境變量為條件進行決策。注意:mod_rewrite內部可以訪問但沒有以 `ENV:` 開頭的那些變量并不是真正的環境變量。它們只是mod_rewrite特有的變量而不能被其他模塊所訪問。 ## 用于特殊目的的環境變量 由于互操作性的問題,在針對特定客戶端的處理中,引入了一套修正Apache行為的機制。為了使這些機制盡量靈活,它們將通過環境變量的定義而激活。比如,典型的示例有`BrowserMatch` ,盡管`SetEnv`和`PassEnv`也能使用。 ### downgrade-1.0 即使這個請求符合更新的標準,也強制把它當作一個HTTP/1.0請求來處理。 ### force-gzip 如果你激活了`DEFLATE`過濾器,這個環境變量將忽略瀏覽器的accept-encoding設置而無條件的使用經過gzip壓縮的輸出。 ### force-no-vary 此變量在將應答送回客戶端之前刪除所有的`Vary`頭字段。一些客戶端不能正確地解析此頭字段。此變量的設定將解決此問題,它同時隱含設置了**force-response-1.0**。 ### force-response-1.0 設定該變量可以在客戶端發送HTTP/1.0請求時,強制進行HTTP/1.0響應。它的實現源于一個AOL的代理產生的問題。一些HTTP/1.0客戶端在收到HTTP/1.1的響應后會有不正常的舉動。而設定此變量能夠解決這一問題。 ### gzip-only-text/html 當該變量為"1"時,將禁止`text/html`之外的內容類型使用由`mod_deflate`提供的`DEFLATE`輸出過濾器。如果你更喜歡使用靜態的壓縮文件;`mod_negotiation`也同樣使用該變量(不單單是gzip,而是所有不具有"同一性"的編碼)。 ### no-gzip 如果設置了此變量,`mod_deflate`中的`DEFLATE`過濾器將被禁用,同時`mod_negotiation`將拒絕發送經過編碼的資源。 ### nokeepalive 如果設置了此變量,`KeepAlive`將被禁用。 ### prefer-language 此變量將影響`mod_negotiation`的行為。如果它包含一個語言標簽(如:`en`、`fr`、`zh_cn`、`x-方言`),`mod_negotiation`將嘗試發送一個標簽指定的語言的變種,如果不存在這樣的變種,則使用通常的[內容協商](#calibre_link-258)處理過程。 ### redirect-carefully 此變量將使服務器在對客戶端發送重定向命令時更加小心。典型應用于已知客戶端在處理重定向指令時會存在問題的情況下。它的實現源于微軟的WebFolders軟件存在的一個問題。它在經由DAV方法在目錄資源上處理重定向命令時會有問題。 ### suppress-error-charset _僅存在于2.0.54后的版本中_ 當Apache針對用戶請求響應一個重定向命令的時候,這個響應中包含了一些文字。這些文字將在客戶端不能(或沒有)自動執行重定向操作的情況下顯示。Apache會將這段文字按照ISO-8859-1字符集進行編碼。 然而,如果重定向的目的頁面使用了不同的字符集,一些有問題的瀏覽器版本會使用重定向命令文本的字符集,而不是采用目的頁面的字符集。比如,希臘文就不會被正確顯示。 設置此環境變量將使Apache略過重定向命令文本的字符集設置,這樣這些有問題的瀏覽器就會正確的使用目的頁的字符集。 ### force-proxy-request-1.0, proxy-nokeepalive, proxy-sendchunked, proxy-sendcl 這些指令改變了`mod_proxy`協議的行為,參見`mod_proxy`文檔以獲得更多細節。 ## 示例 ### 針對表現不恰當的客戶端改變協議的行為 早期的版本建議將以下示例包含到httpd.conf中以解決一些已知的客戶端問題。但是這些存在問題的客戶端現在基本上已經絕種了,所以,下列示例也就沒有存在的必要了。 ``` # 下面的指令將會修改HTTP的普通響應方式。 # 第一個指令為Netscape 2.x瀏覽器禁用keepalive特性,因為它不能正確處理。 # 第二個指令用于IE4.0,因為它也不能對HTTP/1.1的301/302(重定向)應答正確處理keepalive。 BrowserMatch "Mozilla/2" nokeepalive BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0 # 下面的指令為違反HTTP/1.0規范的瀏覽器禁用HTTP/1.1應答。 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 # 允許未發送Referer頭的瀏覽器 SetEnvIf Referer "^$" local_referal <Directory /web/images> Order Deny,Allow Deny from all Allow from env=local_referal </Directory> ``` 想得知此技術的更多信息,請參閱"今日Apache教程" [《保護你的圖片不為他人所用》](http://apachetoday.com/news_story.php3?ltsn=2000-06-14-002-01-PS)。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看