Apache的ProxyPass指令詳解

2021-08-25 23:42:08 字數 4446 閱讀 9299

翻譯:shiningray

描述:將遠端伺服器對映到本地伺服器的url空間

語法:proxypass [路徑] !|url [鍵=值 鍵=值 ...]] [nocanon]

上下文: server config, virtual host, directory

狀態:擴充套件

模組:mod_proxy

該指令可以將遠端伺服器對映到本地伺服器的url空間;本地的伺服器並不是扮演傳統意義上的**伺服器的角色,而是表現為遠端伺服器的乙個映象。此本地伺服器常被成為反向**(reversed proxy)或者是閘道器(gateway)。路徑是指本地虛擬路徑的名字;url指遠端伺服器的乙個部分url,不能包含查詢字串。

注意:在使用proxypass指令的時候,proxyrequests指令通常都應該是關閉的。

假設本地伺服器的位址是 ,那麼

proxypass /mirror/foo/ 將會把對mirror/foo/bar的本地請求內部轉換成到bar的**請求。

其中,!指令當你不想對某個子目錄進行反向**的時候就有用了,例如:

proxypass /mirror/foo/i !

proxypass /mirror/foo 將會把所有的/mirror/foo請求重定向到backend.example.com除了對/mirror/foo/i的請求。

注意:順序很重要:排除的指令必須在一般的proxypass指令之前。

和apache 2.1一樣,具備了使用到後端伺服器的執行緒池的能力。使用「鍵=值」的引數便可調節執行緒池的分配。硬性最大值(hard maximum)的預設值為當前mpm中每個程序的執行緒數量。在prefork mpm中,該值總是為1,在worker mpm中,該值受threadsperchild控制。

設定min可以決定有多少到後端伺服器的鏈結始終開啟。根據需要最多建立數量為柔性最大值(soft maximum),也就是smax的鏈結。任何超出smax數量的鏈結都會指定乙個生存時間也就是ttl。apache不會同時建立超過硬性最大值(或max)數量的到後端伺服器的鏈結。

proxypass /example smax=5 max=20 ttl=120 retry=300

引數預設值

描述min

0到後端伺服器的總是開啟的鏈結最小數。

max1…n

允許連線到後端伺服器的硬性最大鏈結數。硬性最大值的預設值為當前mpm中每個程序的執行緒數量。在prefork mpm中,該值總是為1,在worker mpm中,該值受threadsperchild控制。

smax

max根據需要最多建立數量為柔性最大值(soft maximum),也就是smax的鏈結。任何超出smax數量的鏈結都會指定乙個生存時間也就是ttl

acquire

- 如果設定了該引數,它就會成為等待鏈結池中空閒鏈結的最大時間。如果鏈結池中沒有任何空閒鏈結,那麼apache將會給客戶端返回server_busy狀態。

flushpackets

off

決定**模組是否要在接受到每段資料的時候自動沖掉輸出緩衝。『off』表示只有當需要的時候才沖掉,『on』表示每段資料後都衝,『auto』表示輪詢/等待一段長度為『flushwait』毫秒的時間後如果沒有輸入便沖掉。目前該引數僅對ajp有效。

flushwait

10表示如果『flushpackets』為『auto』,在沖掉輸出組前等待額外輸入的時間,單位毫秒。

keepalive

off該引數應該在你的apache和後端伺服器之間有防火牆的時候時候,因為防火牆有可能會丟棄不活動的鏈結。該標誌將會告訴作業系統在不活動的鏈結中傳送keep_alive訊息(時間間隔由全域性的os設定決定,一般為120ms),這樣避免防火牆丟棄該鏈結。要啟用keepalive可以將該屬性設定為on

lbset

0 對該工作單元所屬的負載均衡集群進行設定。負載均衡器會先嘗試較小的lbset,然後嘗試大的。

ping

0ping資料告訴web伺服器在對ajp13鏈結遞交請求前傳送乙個cping請求。引數為等待cpong響應的延遲,單位為秒。新增該功能是為了避免掛起和忙碌的tomcat的一些問題。該功能需要ajp13 的ping/pong支援,已經在tomcat 3.3.2+、4.1.28+、5.0.13+中實現。它會增加普通操作中的網路流量,有可能是個問題,但是它在集群節點失效或者繁忙的時候減少網路流量。目前該引數只對ajp有效。

loadfactor

1工作單元負載係數。用於balancermember。它是乙個1到100之間的數字,用於定義應用於該工作單元的正規化權重負載。

redirect

-工作單元的重定向路由(redirection route)。該值通常被動態設定用於從集群中安全地移除某個節點。如果被設定了,所有不包含會話id的請求都會被重定向到有等值route引數的balancermember中。

retry

60執行緒池工作單元重試的超時時間,以秒為單位。如果到後端伺服器的執行緒池工作單元狀態是出錯,apache將不會遞交任何請求到該伺服器,直到超時結束。這可以令後端伺服器關閉進行維護,並稍後上線。如果值為0則表示總是重試錯誤狀態的工作單元不等待任何時間。

route

- 工作單元的路由,用於負載均衡器中。該路由是附加給會話id的乙個值。

status

- 用乙個字元定義該工作單元的初始狀態:『d』表示禁用,『s』表示已停止,『i』表示忽略錯誤,『h』表示熱備,『e』表示出錯。狀態可以通過前置『+』表示設定或者『-』表示清楚。這樣,『s-e』表示設定該工作單元為已停止並清除出錯標誌。

timeout

timeout

鏈結超時時間,單位為秒。如果未設定,那麼apache會一直等到有可用的鏈結位置。該指令常和max引數一起使用來限制到後端伺服器的鏈結。

ttl-

超出smax連線數的非活動鏈結的生存時間(time to live),單位為秒。apache會關閉在這段時間內沒有被用過的所有鏈結。

如果**的指令型別以balancer://開頭那麼會建立乙個虛擬工作單元,並不直接和後端伺服器通訊。它負責對一些「真正」的工作單元進行管理。這種情況下可以給虛擬工作單元新增一系列額外引數。更多關於均衡器如何工作的資訊請檢視mod_proxy_balancer

引數預設值

描述lbmethod

byrequests

選擇均衡器的負載均衡方式。可以是byrequests,進行加權請求計數,或者是bytraffic,進行加權流量位元組計數均衡。預設按請求數。

maxattempts

1在放棄之前的故障轉移的最大嘗試次數。

nofailover

off如果設為『on』,當工作單元被禁用或者出錯時,會話則立即中斷。可以將該值設為on如果後端伺服器不支援會話複製(session replication)。

stickysession

- 均衡器粘連會話名稱。該值常常會被設定為類似jsessionid或者phpsessionid之類的值,他依賴於支援會話的後端應用伺服器。如果後端伺服器使用不同的cookie名稱或者url編碼的id(像servlet容器),使用|來分開他們。第乙個部分針對cookie,第二個針對路徑。

timeout

0均衡器超時時間,單位為秒。如果設定了,那麼就是等待空閒工作單元的最大時間。預設是不等。

均衡器設定範例

proxypass /special-area  smax=5 max=10

proxypass / balancer://mycluster stickysession=jsessionid|jsessionid nofailover=on

balancermember

balancermember smax=10

# 效能較弱的伺服器,不要給他傳送太多請求

balancermember smax=1 loadfactor=20

設定乙個熱備份,也就是只有當沒有其他成員可用的時候才使用:

proxypass / balancer://hotcluster/

balancermember loadfactor=1

balancermember loadfactor=2

# 以下是熱備份

balancermember status=+h

proxyset lbmethod=bytraffic

當用在節中的時候,第乙個引數應被忽略,並且本地的路徑將從取得。

如果你需要更加有彈性的反向**配置,參見是用[p]標誌的rewriterule指令。

APACHE優化之apache的記憶體使用

keepalive引數 keepalivetimeout這個引數決定了,在什麼都不做之前,乙個http程序能夠等待多長時間?設想一下,如果keepalive設定為on,而keepalivetimeout設定為乙個比較大的數字,apache占用記憶體會很快的增長。這是因為,乙個apache程序完成了乙...

Apache服務(三)Apache服務支援的語言

1.html 預設支援的語言 2.php 1 編輯php的預設測試頁 退出儲存後開啟瀏覽器檢視什麼都檢視不到 2 yum install php y 安裝php軟體 systemctl restart httpd 重啟服務 再次檢視可以檢視到藍色頁面 註冊的介面cgi 普通閘道器介面 網路的語言裝換...

Apache文件手冊 安裝Apache

安裝 在linux或unix環境下安裝 必需條件 將檔案解壓到某個目錄,例如 srclib apr 和 srclib apr util 2 pcre庫 這是httpd必需的模組 3 磁碟空間 至少50m臨時空間 4 ansi c編譯器和構建環境 5 精確的時間設定,使用ntpdate或者xntpd程...