2017-09-05 116 views
0

我的web棧由(nginx(port:29090) - > tomcat) nginx充當反向代理,和tomcat主機2 webapps
1.對於認證(使用netflix zuul) - 運行在端口29091
2. SensorThings API服務器 - 端口29101
這下面請求是使用zuul.route.sensor.url傳遞運行= http://localhost:29090/sensor-internal
Nginx重寫帶端口變化的正則表達式

下面是nginx.conf方框

location /sensor-internal/ { 
     include cors_support;    
     rewrite ^(/sensor/)(.*)$ SensorThingsServer-1.0/v1.0/$2 break; 
     proxy_redirect  off; 
     proxy_set_header Host $host; 
     rewrite_log on; 

    } 

我想更換URL
http://localhost:29090/sensor/xxxx(n)/yyyy(m)

http://localhost:29101/SensorThingsServer-1.0/v1.0/xxxx(n)/yyyy(m)

在港見變化和STS-1.0/1.0更換傳感器/
我相信上面的塊不會爲端口變革而努力。請指導。

回答

0

您應該描述單獨的位置/sensor/並在那裏執行重寫,因爲您定義的位置/sensor-internal/不服務/sensor/*請求。

location /sensor/ { 
    rewrite ^/(/sensor/)(.*)$ http://localhost:29101:SensorThingsServer-1.0/v1.0/$2 break; 
    rewrite_log on; 
} 
+0

您可以將改寫外塊和塊不會需要 –

+0

技術上 - 是的,你可以把它移動到'server'上下文。但在這種情況下,該規則將測試對該服務器的每個請求 - 從我的角度來看,這會導致無用的CPU使用率。當你定義一個「位置」時,你清楚地指定了哪些URI根據這個重寫規則進行驗證。 –

+1

感謝分享思考過程。請記住:-) –