nginx反向代理配置如何去除前綴

使用nginx做反向代理的時(shí)候,可以簡(jiǎn)單的直接把請(qǐng)求原封不動(dòng)的轉(zhuǎn)發(fā)給下一個(gè)服務(wù)。設(shè)置proxy_pass請(qǐng)求只會(huì)替換域名,如果要根據(jù)不同的url后綴來(lái)訪(fǎng)問(wèn)不同的服務(wù),則需要通過(guò)如下方法:

方法一:加”/”

server?{ ????listen??????????????8000; ????server_name?????????abc.com; ????access_log??"pipe:rollback?/data/log/nginx/access.log?interval=1d?baknum=7?maxsize=1g"??main; ? ????location?^~/user/?{ ????????proxy_set_header?host?$host; ????????proxy_set_header??x-real-ip????????$remote_addr; ????????proxy_set_header??x-forwarded-for??$proxy_add_x_forwarded_for; ????????proxy_set_header?x-nginx-proxy?true; ? ????????proxy_pass?http://user/; ????} ? ????location?^~/order/?{ ????????proxy_set_header?host?$host; ????????proxy_set_header??x-real-ip????????$remote_addr; ????????proxy_set_header??x-forwarded-for??$proxy_add_x_forwarded_for; ????????proxy_set_header?x-nginx-proxy?true; ? ????????proxy_pass?http://order/; ????} }

^~/user/表示匹配前綴是user的請(qǐng)求,proxy_pass的結(jié)尾有/, 則會(huì)把/user/*后面的路徑直接拼接到后面,即移除user。

方法二:rewrite

upstream?user?{ ?server?localhost:8089?weight=5; } upstream?order?{ ?server?localhost:8090?weight=5; } ? server?{ ?listen??80; ?server_name?abc.com; ?access_log?"pipe:rollback?/data/log/nginx/access.log?interval=1d?baknum=7?maxsize=1g"?main; ? ?location?^~/user/?{ ?proxy_set_header?host?$host; ?proxy_set_header?x-real-ip?$remote_addr; ?proxy_set_header?x-forwarded-for?$proxy_add_x_forwarded_for; ?proxy_set_header?x-nginx-proxy?true; ? ?rewrite?^/user/(.*)$?/$1?break; ?proxy_pass?http://user; ?} ? ?location?^~/order/?{ ?proxy_set_header?host?$host; ?proxy_set_header?x-real-ip?$remote_addr; ?proxy_set_header?x-forwarded-for?$proxy_add_x_forwarded_for; ?proxy_set_header?x-nginx-proxy?true; ? ?rewrite?^/order/(.*)$?/$1?break; ?proxy_pass?http://order; ?} }

proxy_pass結(jié)尾沒(méi)有/, rewrite重寫(xiě)了url。

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊13 分享
站長(zhǎng)的頭像-小浪學(xué)習(xí)網(wǎng)月度會(huì)員