您好,登錄后才能下訂單哦!
假設nginx中的配置是這樣的:
server { listen 80; server_name x.x.x.x; . . . . . . location /subdir { proxy_pass http://y.y.y.y; } } |
那么,當用戶請求http://x.x.x.x/subdir/other時,匹配到該區塊,nginx反向代理到后端時會保留虛擬路徑。nginx實際向后端發起的請求URL為http://y.y.y.y/subdir/other。
假設nginx中的配置是這樣的:
server { listen 80; server_name x.x.x.x; . . . . . . location /subdir { proxy_pass http://y.y.y.y/; } } |
那么,當用戶請求http://x.x.x.x/subdir/other時,匹配到該區塊,由于proxy_pass中有指定后端URI路徑,nginx代理請求到后端時不會保留虛擬路徑。nginx實際向后端發起的請求URL為http://y.y.y.y//other。
假設nginx中的配置是這樣的:
server { listen 80; server_name x.x.x.x; . . . . . . location /subdir { proxy_pass http://y.y.y.y/upstream_subdir; } } |
那么,當用戶請求http://x.x.x.x/subdir/other時,匹配到該區塊,由于proxy_pass中有指定后端URI路徑,nginx代理請求到后端時不會保留虛擬路徑。nginx實際向后端發起的請求URL為http://y.y.y.y/upstream_subdir/other。
綜合上述三個示例可以發現,問題的關鍵就在于proxy_pass指令中是否有指定后端服務器的URI,這決定了nginx代理請求到后端時是否會保留location中的虛擬路徑。
當將后端服務器寫成upstream方式時,效果也是一樣的。比如:
upstream backend { server y.y.y.y:80; } server { listen 80; server_name x.x.x.x; . . . . . . location /subdir { proxy_pass http://backend/upstream_subdir; } } |
當用戶請求http://x.x.x.x/subdir/other時,nginx實際向后端發起的請求URL仍然為http://y.y.y.y/upstream_subdir/other。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。