說明 | 提供HTTP/1.1的代理/網關功能支持 |
---|---|
狀態 | 擴展(E) |
模塊名 | proxy_module |
源文件 | mod_proxy.c |
在您沒有對服務器採起安全措施以前,請不要用ProxyRequests
啓用代理。一個開放的代理服務器不只對您的網絡有威脅,對整個因特網來講也一樣如此。php
此模塊實現了Apache的代理/網關。它實現瞭如下規範的代理:AJP13
(Apache JServe Protocol v1.3), FTP
, CONNECT
(用於SSL), HTTP/0.9
, HTTP/1.0
, HTTP/1.1
。此模塊經配置後可用上述或其它協議鏈接其它代理模塊。html
Apache的代理功能(除mod_proxy
之外)被劃分到了幾個不一樣的模塊中:mod_proxy_http
, mod_proxy_ftp
, mod_proxy_ajp
, mod_proxy_balancer
, mod_proxy_connect
。這樣,若是想使用一個或多個代理功能,就必須將mod_proxy
和對應的模塊同時加載到服務器中(靜態鏈接或用LoadModule
動態加載)。node
另外,其它模塊還提供了擴展特性。mod_cache
及其相關模塊提供了緩衝特性。mod_ssl
提供的SSLProxy*
系列指令可使用SSL/TLS鏈接遠程服務器。這些提供擴展特性的模塊必須在被正確加載和配置之後才能提供這些擴展功能。web
Apache能夠被配置爲正向(forward)和反向(reverse)代理。正則表達式
正向代理是一個位於客戶端和原始服務器(origin server)之間的服務器,爲了從原始服務器取得內容,客戶端向代理髮送一個請求並指定目標(原始服務器),而後代理向原始服務器轉交請求並將得到的內容返回給客戶端。客戶端必需要進行一些特別的設置才能使用正向代理。shell
正向代理的典型用途是爲在防火牆內的局域網客戶端提供訪問Internet的途徑。正向代理還可使用緩衝特性(由mod_cache
提供)減小網絡使用率。apache
使用ProxyRequests
指令便可激活正向代理。由於正向代理容許客戶端經過它訪問任意網站而且隱藏客戶端自身,所以你必須採起安全措施以確保僅爲通過受權的客戶端提供服務。後端
反向代理正好相反,對於客戶端而言它就像是原始服務器,而且客戶端不須要進行任何特別的設置。客戶端向反向代理的名字空間(name-space)中的內容發送普通請求,接着反向代理將判斷向何處(原始服務器)轉交請求,並將得到的內容返回給客戶端,就像這些內容本來就是它本身的同樣。瀏覽器
反向代理的典型用途是將防火牆後面的服務器提供給Internet用戶訪問。反向代理還能夠爲後端的多臺服務器提供負載平衡,或爲後端較慢的服務器提供緩衝服務。另外,還能夠啓用高級URL策略和管理技術,從而使處於不一樣web服務器系統的web頁面同時存在於同一個URL空間下。緩存
可使用ProxyPass
指令激活反向代理(在RewriteRule
指令中使用[P]
標記也能夠)。配置反向代理並不須要打開ProxyRequests
指令。
下面的例子僅僅是爲了給你一個基本概念而幫助入門而已,請仔細閱讀每一個指令的文檔。
另外,若是想使用緩衝特性,請查看mod_cache
文檔。
ProxyRequests On
ProxyVia On
<Proxy *>
Order deny,allow
Deny from all
Allow from internal.example.com
</Proxy>
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass /foo http://foo.example.com/bar
ProxyPassReverse /foo http://foo.example.com/bar
您能夠經過<Proxy>
的阻止功能來控制誰能訪問您的代理。示例以下:
<Proxy *>
Order Deny,Allow
Deny from all
Allow from 192.168.0
</Proxy>
要了解更多訪問控制信息,請參見mod_authz_host
文檔。
使用正向代理時嚴格控制訪問權限(使用ProxyRequests
指令)是很是重要的。不然你的代理會被客戶端利用來訪問其它服務器而且隱藏客戶端的真實身份。這不只對您的網絡有威脅,對整個因特網來講也一樣如此。當使用反向代理(在"ProxyRequests Off
"條件下使用ProxyPass
指令)的時候訪問控制要相對寬鬆,由於客戶端只能鏈接你配置的特定主機。
若是您使用了ProxyBlock
指令,將會在啓動時查找並緩存主機名的IP地址以備後繼的匹配測試使用。這將會花費幾秒或更長的時間,這主要取決於主機名查找的速度。
位於局域網內的Apache代理服務器須要經由公司的防火牆轉發對外部的請求(使用ProxyRemote
指令來配置)。但當它訪問局域網內的資源時,它能越過防火牆直接訪問目的主機。在訪問一個屬於局域網的服務器從而進行直接鏈接時,NoProxy
指令就會頗有用。
局域網內的用戶習慣於不在他們的WWW請求中加入本地域的名稱,因而會使用"http://somehost/"來取代http://somehost.example.com/
。一些商業代理服務器會無論這些,只是採用本地域的配置來簡單的伺服這個請求。當使用了ProxyDomain
指令來爲服務器配置了一個代理服務時,Apache會發出一個重定向應答,以使客戶端請求到達正確的、能知足要求的服務器地址。由於這樣一來,用戶的書籤文件就會隨之包含完整的主機名,因此這是首選的方法。
當mod_proxy
向一個沒有正確實現持久鏈接(KeepAlive)或HTTP/1.1的原始服務器發送請求的時候,能夠經過設置兩個環境變量來發送不帶持久鏈接(KeepAlive)的HTTP/1.0請求。這兩個變量是經過SetEnv
指令設置的。
如下是force-proxy-request-1.0
和proxy-nokeepalive
的例子:
<Location /buggyappserver/>
ProxyPass http://buggyappserver:7001/foo/
SetEnv force-proxy-request-1.0 1
SetEnv proxy-nokeepalive 1
</Location>
一些請求方法(如POST)包含一個請求體。HTTP協議要求包含請求體的請求或者使用塊傳輸編碼(chunked transfer encoding)或者包含一個Content-Length
請求頭。當將這種請求傳遞給原始服務器的時候,mod_proxy_http
會始終嘗試使用Content-Length
請求頭。但若是原始請求使用的是塊編碼,那麼塊編碼也一樣能夠用於上行請求。可使用環境變量控制這種選擇。設置proxy-sendcl
能夠確保始終發送Content-Length
頭以與上游服務器保持最大程度的兼容性,而設置proxy-sendchunked
能夠經過繼續使用塊編碼以儘量最小化資源佔用率。
說明 | 經過代理容許CONNECT 的端口號 |
---|---|
語法 | AllowCONNECT port [port] ... |
默認值 | AllowCONNECT 443 563 |
做用域 | server config, virtual host |
狀態 | 擴展(E) |
模塊 | mod_proxy |
AllowCONNECT
指令指定了此代理的CONNECT
方法能夠鏈接的端口號列表。當今的瀏覽器在進行https
鏈接請求時使用這種方法,而代理默認會將其轉爲http
。
默認只啓用了默認的https端口(443
)和默認的snews端口(563
)。使用AllowCONNECT
指令能夠覆蓋默認設置而改成僅容許鏈接列出的端口。
注意,必須確保mod_proxy_connect
也同時存在於服務器中,這樣才能支持CONNECT
。
說明 | 直接進行鏈接的主機/域/網絡 |
---|---|
語法 | NoProxy host [host] ... |
做用域 | server config, virtual host |
狀態 | 擴展(E) |
模塊 | mod_proxy |
此指令僅適用於局域網內的Apache代理服務器。NoProxy
指令指定了一箇中間以空格分隔的子網、IP地址、主機和/或域的列表。對某個匹配上述一個或多個列表項的主機的請求將直接被其伺服而不會轉交到配置好的ProxyRemote
代理服務器。
ProxyRemote * http://firewall.mycompany.com:81
NoProxy .mycompany.com 192.168.112.0/21
NoProxy
指令的host參數能夠是如下選項之一:
域
域是一個DNS域名的一部分,並在前面加上點號。它表示一批邏輯上屬於同一個DNS區域的主機,也就是全部這些主機名具備相同的後綴,而這個"後綴"就是域。
.com
.apache.org.
域和主機名(一個DNS域甚至也可能有一條DNS"A記錄"!)的不一樣之處在於域始終有一個前導點。
域名不區分大小寫而且始終認爲是錨定在DNS樹根上的,所以.MyDomain.com
和.mydomain.com.
(注意結尾點號)是徹底等同的。由於域的比較不須要進行DNS查詢,所以它比子網比較更加高效。
子網
子網以點分十進制形式表示了一個因特網地址的一部分,有時會跟着一個斜槓和子網掩碼,以指定子網中的有效bit位。它用於表示主機經過自身的普通網絡接口能夠訪問的子網範圍。未指定子網掩碼的時候就假定忽略掉的(或爲零的)結尾數字就是掩碼,在這種狀況下,掩碼bit長度必須是8bit的整數倍。例如:
192.168
或192.168.0.0
子網"192.168.0.0
"表示掩碼爲16bit(有時也用255.255.0.0
表示)。
192.168.112.0/21
子網"192.168.112.0/21
"表示掩碼爲21bit(有時也用255.255.248.0
表示)。
在退化到極限的狀況下,一個掩碼爲32bit的子網就等價於一個IP地址。而零個合法bit的子網("0.0.0.0/0")等價於常量"_Default_",能夠匹配任何IP地址。
IP地址
IP地址以點分十進制形式表示了一個完整的因特網地址。通常來講,此地址表明一個主機,但並不須要一個DNS域名與這個地址對應。
192.168.123.7
一個IP地址不須要爲一個DNS系統所解析,因此它能使apache獲取更高性能。
主機名
主機名是一個完整的DNS域名,能夠經過DNS域名服務解析爲一個或多個IP地址。它表明了一個邏輯主機(與域相反)並且必須解析成至少一個IP地址(或常常解析成具備不一樣IP地址的主機列表)。
prep.ai.mit.edu
www.apache.org
在不少狀況下,指定一個IP地址代替主機名會更有效率。由於能夠避免一次DNS查詢。當使用一個低速的PPP與域名服務器鏈接時,Apache的域名解析會花費至關可觀的時間。
主機名不區分大小寫而且始終認爲是錨定在DNS樹根上的,所以WWW.MyDomain.com
和www.mydomain.com.
(注意結尾點號)是徹底等同的。
說明 | 應用於所代理資源的容器 |
---|---|
語法 | <Proxy wildcard-url> ...</Proxy> |
做用域 | server config, virtual host |
狀態 | 擴展(E) |
模塊 | mod_proxy |
位於<Proxy>
配置段中的指令僅做用於匹配的代理內容。語句中可使用shell風格的通配符。
好比說:下例僅容許yournetwork.example.com
中的主機經過您的代理服務器訪問代理內容:
<Proxy *>
Order Deny,Allow
Deny from all
Allow from yournetwork.example.com
</Proxy>
下例將在全部example.com
的foo
目錄下的文件經過代理服務器發送以前用INCLUDES
過濾器進行處理:
<Proxy http://example.com/foo/*>
SetOutputFilter INCLUDES
</Proxy>
說明 | 肯定如何處理不合法的應答頭 |
---|---|
語法 | ProxyBadHeader IsError|Ignore|StartBody |
默認值 | ProxyBadHeader IsError |
做用域 | server config, virtual host |
狀態 | 擴展(E) |
模塊 | mod_proxy |
兼容性 | 僅在 Apache 2.0.44 及之後的版本中可用 |
ProxyBadHeader
指令決定mod_proxy
如何處理不合法的應答頭(好比丟失冒號(:))。參數的取值範圍以下:
IsError
以"502"(Bad Gateway)應答停止請求。這是默認行爲。
Ignore
忽略,就像它們不存在同樣。
StartBody
在接收到第一個非法頭行時中止讀取頭,並將剩餘部分看成應答體。這樣作有助於和一個不規範的、常常忘記在應答頭和應答體之間插入空行的後端服務器協同工做。
說明 | 設置被代理屏蔽的語句、主機、域 |
---|---|
語法 | ProxyBlock *|word|host|domain [word|host|domain] ... |
做用域 | server config, virtual host |
狀態 | 擴展(E) |
模塊 | mod_proxy |
ProxyBlock
指令指定了一個由空格分隔的語句、主機和/或域的列表。對全部匹配這些語句、主機和/或域的HTTP、HTTPS、FTP文檔的請求都將被代理服務器阻斷。代理模塊亦會在啓動時嘗試肯定列表中多是主機名的項目對應的IP地址,並將其緩衝用於匹配測試。好比說:
ProxyBlock joes-garage.com some-host.co.uk rocky.wotsamattau.edu
經過IP地址,rocky.wotsamattau.edu
將可能一樣被匹配。
請注意,wotsamattau
已經足夠匹配wotsamattau.edu
了。
請注意
ProxyBlock *
將屏蔽對全部站點的鏈接。
說明 | 代理請求的默認域名 |
---|---|
語法 | ProxyDomain Domain |
做用域 | server config, virtual host |
狀態 | 擴展(E) |
模塊 | mod_proxy |
此指令僅對位於局域網內的Apache代理服務器有用。ProxyDomain
指令指定了apache代理服務器歸屬的默認域。若是遇到了一個對沒有域名的主機的請求,就會根據配置自動生成一個加上了Domain的重定向應答。
ProxyRemote * http://firewall.mycompany.com:81
NoProxy .mycompany.com 192.168.112.0/21
ProxyDomain .mycompany.com
說明 | 覆蓋代理內容的錯誤頁 |
---|---|
語法 | ProxyErrorOverride On|Off |
默認值 | ProxyErrorOverride Off |
做用域 | server config, virtual host |
狀態 | 擴展(E) |
模塊 | mod_proxy |
兼容性 | 僅在 Apache 2.0 及之後的版本中可用 |
此指令用於反向代理設置中您想爲最終用戶提供觀感一致的錯誤頁面時。它也一樣容許包含文件(經過mod_include
的SSI)獲取錯誤號並做出相應的動做。(默認行爲是顯示被代理的服務器的錯誤頁面,將此項目設爲"On"將顯示SSI錯誤信息。)
說明 | 內部緩衝區大小 |
---|---|
語法 | ProxyIOBufferSize bytes |
默認值 | ProxyIOBufferSize 8192 |
做用域 | server config, virtual host |
狀態 | 擴展(E) |
模塊 | mod_proxy |
ProxyIOBufferSize
指令用於調整內部緩衝區(做爲輸入輸出數據的暫存器)的大小。取值必須小於等於8192
。
在絕大多數狀況下,不須要調整這個設置。
說明 | 應用於匹配正則表達式的代理資源的容器 |
---|---|
語法 | <ProxyMatch regex> ...</ProxyMatch> |
做用域 | server config, virtual host |
狀態 | 擴展(E) |
模塊 | mod_proxy |
<ProxyMatch>
和<Proxy>
指令基本相同,只是匹配字符串能夠爲正則表達式。
說明 | 轉發請求的最大代理數目 |
---|---|
語法 | ProxyMaxForwards number |
默認值 | ProxyMaxForwards 10 |
做用域 | server config, virtual host |
狀態 | 擴展(E) |
模塊 | mod_proxy |
兼容性 | 僅在 Apache 2.0 及之後的版本中可用 |
ProxyMaxForwards
指令指定了容許轉發請求的最大代理數目。這個設置是爲了不無限代理循環或DoS攻擊的發生。
ProxyMaxForwards 15
說明 | 將一個遠端服務器映射到本地服務器的URL空間中 |
---|---|
語法 | ProxyPass [path] !|url [key=value key=value ...]] |
做用域 | server config, virtual host, directory |
狀態 | 擴展(E) |
模塊 | mod_proxy |
該指令容許你將一個遠端服務器映射到本地服務器的URL空間中,此時本地服務器並不充當代理角色,而是充當遠程服務器的一個鏡像。path是一個本地虛擬路徑名,url是一個指向遠程服務器的部分URL,而且不容許包含查詢字符串。
當使用ProxyPass
指令時,ProxyRequests
指令一般應當被設爲 off 。
假設本地服務器地址是:http://example.com/
,那麼,
ProxyPass /mirror/foo/ http://backend.example.com/
將會致使對http://example.com/mirror/foo/bar
的本地請求將會在內部轉換爲一個代理請求:http://backend.example.com/bar
。
"!
"指令對於您不想對某個子目錄進行反向代理時頗有用。好比說:
ProxyPass /mirror/foo/i !
ProxyPass /mirror/foo http://backend.example.com
將會代理除/mirror/foo/i
以外的全部對backend.example.com
下/mirror/foo
的請求。
順序很重要,您須要把拒絕指令放置在普通ProxyPass
指令以前。
As of Apache 2.1, the ability to use pooled connections to a backend server is available. Using the key=value
parameters it is possible to tune this connection pooling. The default for a Hard Maximum
for the number of connections is the number of threads per process in the active MPM. In the Prefork MPM, this is always 1, while with the Worker MPM it is controlled by the ThreadsPerChild
.
Setting min
will determine how many connections will always be open to the backend server. Upto the Soft Maximum or smax
number of connections will be created on demand. Any connections above smax
are subject to a time to live or ttl
. Apache will never create more than the Hard Maximum or max
connections to the backend server.
ProxyPass /example http://backend.example.com smax=5 max=20 ttl=120 retry=300
Parameter | Default | Description |
---|---|---|
min | 0 | Minumum number of connections that will always be open to the backend server. |
max | 1...n | Hard Maximum number of connections that will be allowed to the backend server. The default for a Hard Maximum for the number of connections is the number of threads per process in the active MPM. In the Prefork MPM, this is always 1, while with the Worker MPM it is controlled by the ThreadsPerChild . Apache will never create more than the Hard Maximum connections to the backend server. |
smax | max | Upto the Soft Maximum number of connections will be created on demand. Any connections above smax are subject to a time to live or ttl . |
ttl | - | Time To Live for the inactive connections above the smax connections in seconds. Apache will close all connections that has not been used inside that time period. |
timeout | Timeout |
Connection timeout in seconds. If not set the Apache will wait until the free connection is available. This directive is used for limiting the number of connections to the backend server together with max parameter. |
acquire | - | If set this will be the maximum time to wait for a free connection in the connection pool. If there are no free connections in the pool the Apache will return SERVER_BUSY status to the client. |
keepalive | Off | This parameter should be used when you have a firewall between your Apache and the backend server, who tend to drop inactive connections. This flag will tell the Operating System to send KEEP_ALIVE messages on inactive connections (interval depends on global OS settings, generally 120ms), and thus prevent the firewall to drop the connection. To enable keepalive set this property value to On . |
retry | 60 | Connection pool worker retry timeout in seconds. If the connection pool worker to the backend server is in the error state, Apache will not forward any requests to that server until the timeout expires. This enables to shut down the backend server for maintenance, and bring it back online later. |
loadfactor | 1 | Worker load factor. Used with BalancerMember. It is a number between 1 and 100 and defines the normalized weighted load applied to the worker. |
route | - | Route of the worker when used inside load balancer. The route is a value appended to seesion id. |
redirect | - | Redirection Route of the worker. This value is usually set dynamically to enable safe removal of the node from the cluster. If set all requests without session id will be redirected to the BalancerMember that has route parametar equal as this value. |
If the Proxy directive scheme starts with the balancer://
then a virtual worker that does not really communicate with the backend server will be created. Instead it is responsible for the management of several "real" workers. In that case the special set of parameters can be add to this virtual worker.
Parameter | Default | Description |
---|---|---|
lbmethod | - | Balancer load-balance method. Select the load-balancing scheduler method to use. Either byrequests , to perform weighted request counting or bytraffic , to perform weighted traffic byte count balancing. Default is byrequests . |
stickysession | - | Balancer sticky session name. The value is usually set to something like JSESSIONID 或PHPSESSIONID , and it depends on the backend application server that support sessions. |
nofailover | Off | If set to On the session will break if the worker is in error state or disabled. Set this value to On if backend servers do not support session replication. |
timeout | 0 | Balancer timeout in seconds. If set this will be the maximum time to wait for a free worker. Default is not to wait. |
maxattempts | 1 | Maximum number of failover attempts before giving up. |
ProxyPass /special-area http://special.example.com/ smax=5 max=10
ProxyPass / balancer://mycluster stickysession=jsessionid nofailover=On
<Proxy balancer://mycluster>
BalancerMember http://1.2.3.4:8009
BalancerMember http://1.2.3.5:8009 smax=10
# Less powerful server, don't send as many requests there
BalancerMember http://1.2.3.6:8009 smax=1 loadfactor=20
</Proxy>
When used inside a <Location>
section, the first argument is omitted and the local directory is obtained from the <Location>
.
If you require a more flexible reverse-proxy configuration, see the RewriteRule
directive with the [P]
flag.
說明 | 調整由反向代理服務器發送的HTTP應答頭中的URL |
---|---|
語法 | ProxyPassReverse [path] url |
做用域 | server config, virtual host, directory |
狀態 | 擴展(E) |
模塊 | mod_proxy |
此指令使Apache調整HTTP重定向應答中Location
, Content-Location
, URI
頭裏的URL。這樣能夠避免在Apache做爲反向代理使用時,後端服務器的HTTP重定向形成的繞過反向代理的問題。
只有明確指定的應答頭會被重寫,其它應答頭保持不變,而且HTML頁面中的URL也不會被修改。若是被代理的內容包含絕對URL引用,那麼將會繞過代理。有一個第三方模塊能夠檢查並改寫HTML中的URL引用,該模塊就是Nick Kew編寫的mod_proxy_html。
path是本地虛擬路徑的名稱。url是遠端服務器的部分URL。與ProxyPass
指令中的使用方法相同。
例如,假定本地服務器擁有地址http://example.com/
,那麼
ProxyPass /mirror/foo/ http://backend.example.com/
ProxyPassReverse /mirror/foo/ http://backend.example.com/
ProxyPassReverseCookieDomain backend.example.com public.example.com
ProxyPassReverseCookiePath / /mirror/foo/
不只會把全部對http://example.com/mirror/foo/bar
的請求直接轉換爲對http://backend.example.com/bar
的代理請求(由ProxyPass
提供的功能),它還會重定向服務器backend.example.com
的發送:當http://backend.example.com/bar
被它重定向到http://backend.example.com/quux
時,Apache會在轉交HTTP重定向應答到客戶端以前調整它爲http://example.com/mirror/foo/quux
。注意:被用於構建URL的主機名與UseCanonicalName
指令的設置有關。
注意,此ProxyPassReverse
指令亦可與mod_rewrite
的代理穿透特性(RewriteRule ... [P]
)聯用。由於它不依賴於相應的ProxyPass
指令。
當在<Location>
配置段中使用時,第一個參數會被忽略而採用由<Location>
指令指定的本地目錄。
說明 | Adjusts the Domain string in Set-Cookie headers from a reverse- proxied server |
---|---|
語法 | ProxyPassReverseCookieDomain internal-domain public-domain |
做用域 | server config, virtual host, directory |
狀態 | 擴展(E) |
模塊 | mod_proxy |
Usage is basically similar to ProxyPassReverse
, but instead of rewriting headers that are a URL, this rewrites the domain
string in Set-Cookie
headers.
說明 | Adjusts the Path string in Set-Cookie headers from a reverse- proxied server |
---|---|
語法 | ProxyPassReverseCookiePath internal-path public-path |
做用域 | server config, virtual host, directory |
狀態 | 擴展(E) |
模塊 | mod_proxy |
Usage is basically similar to ProxyPassReverse
, but instead of rewriting headers that are a URL, this rewrites the path
string in Set-Cookie
headers.
說明 | 使用進入的HTTP請求頭來發送代理請求 |
---|---|
語法 | ProxyPreserveHost On|Off |
默認值 | ProxyPreserveHost Off |
做用域 | server config, virtual host |
狀態 | 擴展(E) |
模塊 | mod_proxy |
兼容性 | 僅在 Apache 2.0.31 及之後的版本中可用 |
當啓用時,此選項將把傳入請求的"Host:"行傳遞給被代理的主機,而不是傳遞在ProxyPass
中指定的主機名。
此選項通常爲Off
狀態。It is mostly useful in special configurations like proxied mass name-based virtual hosting, where the original Host header needs to be evaluated by the backend server.
說明 | 代理HTTP和FTP鏈接的接收緩衝區大小(字節) |
---|---|
語法 | ProxyReceiveBufferSize bytes |
默認值 | ProxyReceiveBufferSize 0 |
做用域 | server config, virtual host |
狀態 | 擴展(E) |
模塊 | mod_proxy |
ProxyReceiveBufferSize
指令爲增長的吞吐量指定了代理HTTP和FTP鏈接的(TCP/IP)網絡接收緩衝區。這個值必須大於512
,或設置爲"0
"表示使用系統默認的緩衝大小。
ProxyReceiveBufferSize 2048
說明 | 用於處理某些特定請求的遠端代理 |
---|---|
語法 | ProxyRemote match remote-server |
做用域 | server config, virtual host |
狀態 | 擴展(E) |
模塊 | mod_proxy |
此指令定義了此代理的遠端代理。match能夠是遠端服務器支持的URL形式的名稱、或是遠端服務器使用的部分URL、或是表明服務器能夠接受全部請求的"*
"。remote-server是遠端服務器的部分URL。語法爲:
remote-server = scheme://hostname[:port]
scheme是與遠端服務器交換信息時使用的協議;本模塊暫時只支持http
協議。
ProxyRemote http://goodguys.com/ http://mirrorguys.com:8000
ProxyRemote * http://cleversite.com
ProxyRemote ftp http://ftpproxy.mydomain.com:8080
在最後一個例子中,代理會將封裝到另一個HTTP代理請求中的FTP請求轉交到另一個能處理它們的代理去。
此選項也支持反向代理配置:一個後端web服務器能夠被嵌入到一個虛擬主機的URL空間中,哪怕它是由另外一個代理轉交過來的。
說明 | 處理匹配正則表達式的請求的遠端代理 |
---|---|
語法 | ProxyRemoteMatch regex remote-server |
做用域 | server config, virtual host |
狀態 | 擴展(E) |
模塊 | mod_proxy |
ProxyRemoteMatch
與ProxyRemote
令基本相同。除了第一個參數是由一個請求的URL變成了匹配的正則表達式。
說明 | 啓用正向(標準)代理請求 |
---|---|
語法 | ProxyRequests On|Off |
默認值 | ProxyRequests Off |
做用域 | server config, virtual host |
狀態 | 擴展(E) |
模塊 | mod_proxy |
此指令將容許或禁止Apache做爲正向代理服務器的功能(設置爲Off
並不會禁用ProxyPass
指令)。
在一個典型的反向代理配置中,此可選項通常設置爲Off
。
爲了可以代理HTTP或FTP站點,mod_proxy_http
或mod_proxy_ftp
必須同時存在於服務器中。
在您沒有對服務器採起安全措施以前,請不要用ProxyRequests
啓用您的代理。一個開放的代理服務器不只對您的網絡有威脅,對整個因特網來講也一樣如此。
說明 | 代理請求的網絡超時 |
---|---|
語法 | ProxyTimeout seconds |
默認值 | ProxyTimeout 300 |
做用域 | server config, virtual host |
狀態 | 擴展(E) |
模塊 | mod_proxy |
兼容性 | 僅在 Apache 2.0.31 及之後的版本中可用 |
此指令容許用戶對代理請求指定一個超時值。當你有一個很慢/錯誤多多的應用服務器常常掛起,而您寧願返回一個超時的失敗信息也不肯意繼續等待不知道多久的時候,這個功能是頗有用的。
說明 | 控制代理對Via 應答頭的使用 |
---|---|
語法 | ProxyVia On|Off|Full|Block |
默認值 | ProxyVia Off |
做用域 | server config, virtual host |
狀態 | 擴展(E) |
模塊 | mod_proxy |
此指令控制代理對"Via:
"頭的使用。它的目的是控制位於代理服務器鏈中的代理請求的流向。參閱RFC 2616(HTTP/1.1)14.45小節以得到關於"Via:
"頭的解釋。
Off
,將不會採起特殊的處理。若是一個請求或應答包含"Via:
"頭,將不進行任何修改而直接經過。On
每一個請求和應答都會對應當前主機獲得一個"Via:
"頭。Full
,每一個產生的"Via:
"頭中都會額外加入Apache服務器的版本,以"Via:
"註釋域出現。Block
,每一個代理請求中的全部"Via:
"頭行都將被刪除。且不會產生新的"Via:
"頭。