黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節(jié)點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 Nginx常用的代理配置

Nginx常用的代理配置

更新時間:2021-06-18 16:47:13 來源:動力節(jié)點 瀏覽1314次

nginx常用代理配置

因為業(yè)務(wù)系統(tǒng)需求,需要對web服務(wù)作nginx代理,在不斷的嘗試過程中,簡單總結(jié)了一下常見的nginx代理配置。

最簡反向代理配置

在http節(jié)點下,使用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;
    }
}

通過該配置,訪問nginx地址http://10.0.0.1:80/my的請求會被轉(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;
    }
}

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

重定向報文代理

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

location /my/ {
    proxy_pass http://my_server;
    proxy_set_header Host $host:$server_port;

	proxy_redirect / /my/;
}

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

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

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配置只有一個server時,http://$host:$server_port前綴可以省略。

報文數(shù)據(jù)替換

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

一般的web頁面會包含如下類似路徑:

  • /public:用于靜態(tài)頁面資源,如js腳本/public/js,樣式表/public/css,圖片/public/img等。
  • /static:和/public類似。
  • /api:用于后臺服務(wù)API接口。
  • /login:用于登錄驗證。
  • 其他。

對于這樣的服務(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頁面或靜態(tài)資源內(nèi)寫死了類似的絕對路徑,那么對于用戶來說,通過頁面內(nèi)的鏈接進行跳轉(zhuǎn)時,都會請求到nginx服務(wù)對應(yīng)的路徑上。一旦存在另一個服務(wù)也包含類似的路徑,也需要nginx進行代理,那么矛盾就出現(xiàn)了:訪問nginx的同一個路徑下的請求究竟轉(zhuǎn)發(fā)給哪一個服務(wù)?

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

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模塊提供了類似的報文數(shù)據(jù)替換功能,該模塊默認不會安裝,需要在編譯nginx時添加--with-http_sub_module參數(shù),或者直接下載nginx的rpm包。

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

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;
}

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

以上就是動力節(jié)點小編介紹的"Nginx常用的代理配置",希望對大家有幫助,如有疑問,請在線咨詢,有專業(yè)老師隨時為您服務(wù)。

提交申請后,顧問老師會電話與您溝通安排學(xué)習(xí)

免費課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 日韩有码视频在线 | 国产免费色视频 | 日韩性网站| 精品国产一区二区三区不卡 | www亚洲色图| 免费在线观看的黄色网址 | 黄色免费在线网站 | 成人影院免费观看 | 欧美特黄特刺激a一级淫片 欧美特黄视频在线观看 | 三级伦理剧 | 欧美日韩一二三四区 | 精品在线免费视频 | 日韩精品小视频 | 国产人成精品午夜在线观看 | 日韩精品一区二区三区中文版 | 99热视热频这里只有精品 | 国产福利免费视频 | 成人国产一区二区三区 | 日韩在线国产精品 | 草久久免费视频 | 中文字幕 亚洲 一区二区三区 | 国产在线91精品天天更新 | 日韩高清一区二区三区五区七区 | 国产综合色在线视频区色吧图片 | 成人影院在线免费观看 | 精品999| 国产成人综合洲欧美在线 | 日韩亚洲欧美在线爱色 | 婷婷视频在线观看 | 阿v天堂2021在线观看 | 国产高清视频一区二区 | 韩国成人理伦片免费播放 | 一级黄色免费片 | 做性视频 | 六度国产福利午夜视频黄瓜视频 | 一级特黄录像绵费播放 | 国产日本在线视频 | 天堂中文在线资源 | 亚洲欧美日韩综合 | 欧美黄a| 福利视频h |