我想有Nginx代理的多個站點。 或者使用site1.someIp
,site2.someIp
或someIp/site1
,someIp/site2
nginx轉發,但改變位置上下文
當我試圖做到這一點使用以下設置:
server{
listen 80;
listen [::]:80;
location /first {
proxy_pass http://localThing:somePort;
}
location /second {
proxy_pass localThing2;
}
}
這導致/first
轉發http://localThing:somePort/first
,但實際上,我只是想轉發到http://localThing:somePort
目前,我使用多個服務器監聽不同的端口,例如someIp:1111
,someIP:2222
但這不是一個很好的解決方案。
- 我想要麼不知何故不轉發匹配的位置
- 或使用mysite.someIp:somePort(但不知道如何做到這一點)
由@jdewald好心提供的答案是HTML轉發的一個好的開始,但不是CSS。
到目前爲止,我發現它可以在那裏加入somePort/
在最後/
是重要的,但產生相同的問題,因爲CSS是無法訪問被簡化爲
location /first {
proxy_pass http://someip:somePort/;
}
。 CSS似乎無法訪問,因爲應用程序(http://concourse.ci/)正在localIp:somePort/public
上提供它。如果位置設置爲/
,但這不是問題,但是由於我想使用上述兩種方法之一很好地代理多個服務,而不是使用不同端口映射到/
。
尼斯抓在簡化版本中,我會空白並忘記nginx會替換匹配的位置。那麼CSS在概念上是在/(first|second|...)/public/blah.css(在應用程序中是/public/blah.css)還是first.mysite.com/public/blah.css?你想剝奪「/公共」部分還是你想從那裏到達?什麼URL是爲CSS服務的HTML? –
這個CSS例如從http:// myServer:5555/public/main.css?id = fef6507a177742529af48a161e08a9a4提供服務據我所知,css是從/ public的本地服務提供的,我想爲它提供服務從'myNginx/service /'或'service.myNginx'我只想要所有的東西交付,只是希望服務工作。 –
所以HTML和CSS來自不同的地方?真的沒有理由你不能只將位置塊設置爲/ service/{傳遞給/ public /。我可以編輯答案,但它基本上就是你已經有的,只是對於每個位置塊 –