日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

1. 最簡(jiǎn)反向代理配置

在http節(jié)點(diǎn)下,使用upstream配置服務(wù)地址,使用server的location配置代理映射。

upstream my_server {

server 10.0.0.2:8080;

keepalive 2000;

}

server {

listen 80;

server_name 10.0.0.1;

client_max_body_size 1024M;

location /my/ {

proxy_pass http://my_server/;

proxy_set_header Host $host:$server_port;

}

}

通過(guò)該配置,訪問(wèn)Nginx地址http://10.0.0.1:80/my的請(qǐng)求會(huì)被轉(zhuǎn)發(fā)到my_server服務(wù)地址http://10.0.0.2:8080/。

需要注意的是,如果按照如下配置:

upstream my_server {

server 10.0.0.2:8080;

keepalive 2000;

}

server {

listen 80;

server_name 10.0.0.1;

client_max_body_size 1024M;

location /my/ {

proxy_pass http://my_server;

proxy_set_header Host $host:$server_port;

}

}

那么,訪問(wèn)nginx地址http://10.0.0.1:80/my的請(qǐng)求會(huì)被轉(zhuǎn)發(fā)到my_server服務(wù)地址http://10.0.0.2:8080/my。這是因?yàn)閜roxy_pass參數(shù)中如果不包含url的路徑,則會(huì)將location的pattern識(shí)別的路徑作為絕對(duì)路徑。

2. 重定向報(bào)文代理

即便配置了nginx代理,當(dāng)服務(wù)返回重定向報(bào)文時(shí)(http code為301或302),會(huì)將重定向的目標(biāo)url地址放入http response報(bào)文的header的location字段內(nèi)。用戶瀏覽器收到重定向報(bào)文時(shí),會(huì)解析出該字段并作跳轉(zhuǎn)。此時(shí)新的請(qǐng)求報(bào)文將直接發(fā)送給服務(wù)地址,而非nginx地址。為了能讓nginx攔截此類(lèi)請(qǐng)求,必須修改重定向報(bào)文的location信息。

location /my/ {

proxy_pass http://my_server;

proxy_set_header Host $host:$server_port;

proxy_redirect / /my/;

}

使用proxy_redirect可以修改重定向報(bào)文的location字段,例子中會(huì)將所有的根路徑下的url代理到nginx的/my/路徑下返回給用戶。比如服務(wù)返回的重定向報(bào)文的location原始值為/login,那么經(jīng)過(guò)nginx代理后,用戶收到的報(bào)文的location字段為/my/login。此時(shí),瀏覽器將會(huì)跳轉(zhuǎn)到nginx的/my/login地址進(jìn)行訪問(wèn)。

需要注意的是,服務(wù)返回的重定向報(bào)文的location字段有時(shí)會(huì)填寫(xiě)絕對(duì)路徑(包含服務(wù)的ip/域名和端口),有時(shí)候會(huì)填寫(xiě)相對(duì)路徑,此時(shí)需要根據(jù)實(shí)際情況進(jìn)行甄別。

location /my/ {

proxy_pass http://my_server;

proxy_set_header Host $host:$server_port;

proxy_redirect http://my_server/ http://$host:$server_port/my/;

}

上述配置便是將my_server服務(wù)的根路徑下的所有路徑代理到nginx地址的/my/路徑下。當(dāng)nginx配置只有一個(gè)server時(shí),http://$host:$server_port前綴可以省略。

3. 報(bào)文數(shù)據(jù)替換

使用nginx代理最牛(dan)逼(sui)的情況就是http響應(yīng)報(bào)文內(nèi)寫(xiě)死了服務(wù)地址或web絕對(duì)路徑。寫(xiě)死服務(wù)地址的情況比較少見(jiàn),但也偶爾存在。最棘手的是寫(xiě)死了web絕對(duì)路徑,尤其是絕對(duì)路徑都沒(méi)有公共前綴。舉個(gè)例子來(lái)說(shuō):

一般的web頁(yè)面會(huì)包含如下類(lèi)似路徑:

/public:用于靜態(tài)頁(yè)面資源,如js腳本/public/js,樣式表/public/css,圖片/public/img等。

/static:和/public類(lèi)似。

/api:用于后臺(tái)服務(wù)API接口。

/login:用于登錄驗(yàn)證。

其他。

對(duì)于這樣的服務(wù),可能的代理配置如下:

location /my/ {

proxy_pass http://my_server/;

proxy_set_header Host $host:$server_port;

proxy_redirect / /my/;

}

location /login/ {

proxy_pass http://my_server/public;

proxy_set_header Host $host:$server_port;

}

location /public/ {

proxy_pass http://my_server/public;

proxy_set_header Host $host:$server_port;

}

location /api/ {

proxy_pass http://my_server/api;

proxy_set_header Host $host:$server_port;

}

由于web頁(yè)面或靜態(tài)資源內(nèi)寫(xiě)死了類(lèi)似的絕對(duì)路徑,那么對(duì)于用戶來(lái)說(shuō),通過(guò)頁(yè)面內(nèi)的鏈接進(jìn)行跳轉(zhuǎn)時(shí),都會(huì)請(qǐng)求到nginx服務(wù)對(duì)應(yīng)的路徑上。一旦存在另一個(gè)服務(wù)也包含類(lèi)似的路徑,也需要nginx進(jìn)行代理,那么矛盾就出現(xiàn)了:訪問(wèn)nginx的同一個(gè)路徑下的請(qǐng)求究竟轉(zhuǎn)發(fā)給哪一個(gè)服務(wù)?

要解決這個(gè)問(wèn)題,必須在用戶收到報(bào)文前,將報(bào)文的數(shù)據(jù)中包含的絕對(duì)路徑都添加統(tǒng)一的前綴,如/my/public,/my/api,/my/login,這樣nginx代理配置則可以簡(jiǎn)化為:

location /my/ {

proxy_pass http://my_server/;

proxy_set_header Host $host:$server_port;

proxy_redirect / /my/;

}

location /other/ {

proxy_pass http://other_server/;

proxy_set_header Host $host:$server_port;

proxy_redirect / /other/;

}

nginx的ngx_http_sub_module模塊提供了類(lèi)似的報(bào)文數(shù)據(jù)替換功能,該模塊默認(rèn)不會(huì)安裝,需要在編譯nginx時(shí)添加--with-http_sub_module參數(shù),或者直接下載nginx的rpm包。

使用sub_filter對(duì)數(shù)據(jù)包進(jìn)行替換的語(yǔ)法如下:

location /my/ {

proxy_pass http://my_server/;

proxy_set_header Host $host:$server_port;

 

sub_filter 'href="/' 'href="/my/';

sub_filter 'src="/' 'src="/my/';

sub_filter_types text/html;

sub_filter_once off;

}

上述配置會(huì)將/my/下的所有響應(yīng)報(bào)文內(nèi)容的href="/替換為href="/my,以及src="/替換為src="/my,即為所有的絕對(duì)路徑添加公共前綴。

注意,如果需要配置多個(gè)sub_filter,必須保證nginx是1.9.4版本之上的。

分享到:
標(biāo)簽:代理 nginx
用戶無(wú)頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過(guò)答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫(kù),初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定