2016-10-17 55 views
0

衝突所以我有一個nginx的規則位置設置是這樣的:Nginx的位置規則與控制器

location /foo { 
      proxy_pass    http://<a-service-discovery-url>/foo/; 
      proxy_redirect   default; 
      proxy_set_header  X-Real-IP    $remote_addr; 
      proxy_set_header  X-Forwarded-For   $proxy_add_x_forwarded_for; 
} 

然後,我有一個控制器,網址,如:

/foo-bar/bizz 

奇怪的是,當我打/ foo-bar/bizz中的控制器會重新定向到/ foo,這是不需要的。

我試過很多規則組合都導致意想不到的結果:

location /foo/ 

location = /foo 

location = /foo/ 

還與定義的正則表達式〜行不通因爲proxy_pass包含位於該位置規則中的世界foo。

不希望有尾部斜線,因爲那樣用戶將不得不明確地寫入它。

任何幫助,將不勝感激。 謝謝。

+0

你能解釋一下,你打的是什麼網址,還有哪些其他位置塊,以及你期望什麼,什麼是不良行爲? – Satys

回答

0

您是否嘗試將代理路徑中的尾部斜槓添加到位置時刪除它。

location /foo/ { 
     proxy_pass    http://<a-service-discovery-url>/foo; 
     proxy_redirect   default; 
     proxy_set_header  X-Real-IP    $remote_addr; 
     proxy_set_header  X-Forwarded-For   $proxy_add_x_forwarded_for; 
} 
+0

當我點擊/ foo(沒有結尾斜線)時,會在重定向到端口8001(其中nginx正在偵聽)時執行此操作。 :S – RicardoE

+0

你的服務器塊中有哪些指令?默認行爲應執行301從/ foo到/ foo / –