Nginx 服務(wù)器的反向代理服務(wù)是其最常用的重要功能,由反向代理服務(wù)也可以衍生出很多與此相關(guān)的 Nginx 服務(wù)器重要功能,比如后面會(huì)介紹的負(fù)載均衡。
反向代理,其實(shí)客戶端對代理是無感知的,因?yàn)榭蛻舳瞬恍枰魏闻渲镁涂梢栽L問,我們只需要將請求發(fā)送到反向代理服務(wù)器,由反向代理服務(wù)器去選擇目標(biāo)服務(wù)器獲取數(shù)據(jù)后,在返回給客戶端,此時(shí)反向代理服務(wù)器和目標(biāo)服務(wù)器對外就是一個(gè)服務(wù)器,暴露的是代理服務(wù)器地址,隱藏了真實(shí)服務(wù)器IP地址。 (推薦學(xué)習(xí):nginx教程)
nginx反向代理配置:
location ~ /someuri { access_log /var/log/nginx/uploads.log; proxy_pass_header Server; proxy_set_header Host $http_host; proxy_redirect off; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Scheme $scheme; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_read_timeout 300; proxy_pass $scheme://proxy_location$uri; recursive_error_pages on; }
如上面代碼所示,可以進(jìn)行反向代理,但這樣會(huì)有問題:如果在url里面加了請求參數(shù),用$scheme://proxy_location$uri轉(zhuǎn)發(fā)后是不帶這請求參數(shù)的,所以不能使用$uri這個(gè)變量,如需要繼續(xù)攜帶請求參數(shù),則需要使用$request_uri,即proxy_pass $scheme://proxy_location$request_uri;