在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ Linux/ Nginx反向代理
Nginx安裝
Nginx內(nèi)容緩存
Nginx架構(gòu)
Nginx進(jìn)程和運(yùn)行時(shí)控制
Nginx配置虛擬機(jī)
Nginx從源碼構(gòu)建安裝配置
為什么需要Nginx?
Nginx配置文件
Nginx壓縮和解壓
Nginx+PHP7+MySQL5.7(LNMP)環(huán)境配置
Nginx反向代理
Nginx+PHP7源碼安裝配置
Nginx快速入門
Nginx的優(yōu)勢(shì)(優(yōu)點(diǎn))
Nginx教程
Nginx特性
Nginx配置Web服務(wù)器
Nginx配置日志
Nginx配置靜態(tài)內(nèi)容服務(wù)器
Nginx主要應(yīng)用場(chǎng)景(必讀)
Nginx安裝(從Linx包安裝)

Nginx反向代理

本文介紹代理服務(wù)器的基本配置。 您將學(xué)習(xí)如何通過(guò)不同協(xié)議將NGINX請(qǐng)求傳遞給代理的服務(wù)器,修改發(fā)送到代理服務(wù)器的客戶端請(qǐng)求標(biāo)頭,以及配置來(lái)自代理服務(wù)器的響應(yīng)緩沖。

代理服務(wù)器的基本配置目錄

  • 代理服務(wù)器介紹
  • 將請(qǐng)求傳遞給代理的服務(wù)器
  • 傳遞請(qǐng)求標(biāo)頭
  • 配置緩沖區(qū)
  • 選擇傳出IP地址

1. 代理服務(wù)器介紹

代理通常用于在多個(gè)服務(wù)器之間分配負(fù)載,無(wú)縫地顯示來(lái)自不同網(wǎng)站的內(nèi)容,或者通過(guò)HTTP以外的協(xié)議將請(qǐng)求傳遞給應(yīng)用服務(wù)器。

2. 將請(qǐng)求傳遞給代理的服務(wù)器

當(dāng)NGINX代理請(qǐng)求時(shí),它將請(qǐng)求發(fā)送到指定的代理服務(wù)器,獲取響應(yīng),并將其發(fā)送回客戶端。 可以使用指定的協(xié)議將請(qǐng)求代理到HTTP服務(wù)器(另一個(gè)NGINX服務(wù)器或任何其他服務(wù)器)或非HTTP服務(wù)器(可以運(yùn)行使用特定框架開(kāi)發(fā)的應(yīng)用程序,如PHPPython)。 支持的協(xié)議包括FastCGI,uwsgi,SCGI和memcached。

要將請(qǐng)求傳遞給HTTP代理服務(wù)器,則在一個(gè)location塊內(nèi)指定proxy_pass指令。 例如:

location /some/path/ {
    proxy_pass http://www.example.com/link/;
}

此示例配置將在此location處理的所有請(qǐng)求傳遞到指定地址(http://www.example.com/link/)處的代理服務(wù)器。該地址可以指定為域名或IP地址。 該地址還可能包括一個(gè)端口:

location ~ \.php {
    proxy_pass http://127.0.0.1:8000;
}

請(qǐng)注意,在上述第一個(gè)示例中,代理服務(wù)器的地址后面是URI為 /link/。 如果URI與地址一起指定,它將替換與location參數(shù)匹配請(qǐng)求URI的部分。 例如,這里使用/some/path/page.html的URI請(qǐng)求將被代理到http://www.example.com/link/page.html。 如果地址被指定為沒(méi)有URI,或者不可能確定要替換的URI部分,則會(huì)傳遞完整的請(qǐng)求URI(可能是修改)。

要將請(qǐng)求傳遞給非HTTP代理服務(wù)器,應(yīng)使用適當(dāng)?shù)?code>**_ pass指令:

  • fastcgi_pass 將請(qǐng)求傳遞給FastCGI服務(wù)器
  • uwsgi_pass 將請(qǐng)求傳遞給uwsgi服務(wù)器
  • scgi_pass 將請(qǐng)求傳遞給SCGI服務(wù)器
  • memcached_pass 將請(qǐng)求傳遞給memcached服務(wù)器

請(qǐng)注意,在這些情況下,指定地址的規(guī)則可能不同。 您可能還需要向服務(wù)器傳遞其他參數(shù)(有關(guān)詳細(xì)信息,請(qǐng)參閱參考文檔)。

proxy_pass指令也可以指向一組命名的服務(wù)器。 在這種情況下,根據(jù)指定的方法在組中的服務(wù)器之間分配請(qǐng)求。

3. 傳遞請(qǐng)求標(biāo)頭

默認(rèn)情況下,NGINX在代理請(qǐng)求“Host”“Connection”中重新定義了兩個(gè)頭字段,并消除了其值為空字符串的頭字段。 “Host”設(shè)置為$proxy_host變量,“Connection”設(shè)置為關(guān)閉(close)。

要更改這些設(shè)置,以及修改其他header字段,請(qǐng)使用proxy_set_header指令。 該指令可以在一個(gè)或多個(gè)位置(location)指定。 它也可以在特定的server上下文或http塊中指定。 例如:

location /some/path/ {
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_pass http://localhost:8000;
}

在此配置中,“Host”字段設(shè)置為 $host 變量。
為了防止頭域被傳遞給代理服務(wù)器,請(qǐng)將其設(shè)置為空字符串,如下所示:

location /some/path/ {
    proxy_set_header Accept-Encoding "";
    proxy_pass http://localhost:8000;
}

4. 配置緩沖區(qū)

默認(rèn)情況下,NGINX緩存來(lái)自代理服務(wù)器的響應(yīng)。 響應(yīng)存儲(chǔ)在內(nèi)部緩沖區(qū)中,并且不會(huì)發(fā)送到客戶端,直到收到整個(gè)響應(yīng)。 緩沖有助于通過(guò)慢客戶端優(yōu)化性能,如果響應(yīng)從NGINX同步傳遞到客戶端,這可能會(huì)浪費(fèi)代理服務(wù)器時(shí)間。 然而,當(dāng)啟用緩沖時(shí),NGINX允許代理服務(wù)器快速處理響應(yīng),而NGINX存儲(chǔ)響應(yīng)時(shí)間與客戶端需要下載的時(shí)間一樣長(zhǎng)。

負(fù)責(zé)啟用和禁用緩沖的指令是proxy_buffering。 默認(rèn)情況下,它被設(shè)置為開(kāi)啟且緩沖已啟用。

proxy_buffers指令控制分配給請(qǐng)求的緩沖區(qū)的大小和數(shù)量。 來(lái)自代理服務(wù)器的響應(yīng)的第一部分存儲(chǔ)在單獨(dú)的緩沖區(qū)中,其大小由proxy_buffer_size指令設(shè)置。 這部分通常包含一個(gè)比較小的響應(yīng)頭,并且可以比其余的響應(yīng)的緩沖區(qū)小。

在以下示例中,緩沖區(qū)的默認(rèn)數(shù)量增加,并且響應(yīng)的第一部分的緩沖區(qū)的大小小于默認(rèn)值。

location /some/path/ {
    proxy_buffers 16 4k;
    proxy_buffer_size 2k;
    proxy_pass http://localhost:8000;
}

如果緩存被禁用,則在從代理服務(wù)器接收緩沖時(shí),響應(yīng)將同步發(fā)送到客戶端。 對(duì)于需要盡快開(kāi)始接收響應(yīng)的快速交互式客戶端,此行為可能是可取的。

要禁用特定位置的緩沖,請(qǐng)?jiān)?code>location塊中將proxy_buffering偽指令設(shè)置為off,如下所示:

location /some/path/ {
    proxy_buffering off;
    proxy_pass http://localhost:8000;
}

在這種情況下,NGINX只使用由proxy_buffer_size配置的緩沖區(qū)來(lái)存儲(chǔ)響應(yīng)的當(dāng)前部分。

5. 選擇傳出IP地址

如果您的代理服務(wù)器有多個(gè)網(wǎng)絡(luò)接口,有時(shí)您可能需要選擇特定的源IP地址才能連接到代理服務(wù)器或上游。 如果NGINX后端的代理服務(wù)器只配置為接受來(lái)自特定IP網(wǎng)絡(luò)或IP地址范圍的連接,在這種情況下,這個(gè)配置選項(xiàng)就很有用。

指定proxy_bind指令和必要網(wǎng)絡(luò)接口的IP地址:

location /app1/ {
    proxy_bind 127.0.0.1;
    proxy_pass http://example.com/app1/;
}

location /app2/ {
    proxy_bind 127.0.0.2;
    proxy_pass http://example.com/app2/;
}

IP地址也可以用變量指定。 例如,$server_addr變量傳遞接受請(qǐng)求的網(wǎng)絡(luò)接口的IP地址:

location /app3/ {
    proxy_bind $server_addr;
    proxy_pass http://example.com/app3/;
}