2017-09-13 38 views
0

在主機上,我有碼頭容器在端口4012,並在碼頭容器中的webapp運行在端口3000(0.0.0.0:4012->3000/tcp) 因此,以訪問webapp我只需去http://hostname:4012,網頁顯示正常。 我希望能夠去http://hostname/metrics從我的瀏覽器運行相同的網頁。NGINX反向代理到碼頭集裝箱運行web應用

雖然我得到這個通過簡單地增加一個位置到主機上的nginx.conf工作:
位置/度{
proxy_pass http://localhost:4012;
}

所有加載是index.html的(我看到http://localhost:4012http://hostname/metrics相同的HTML源代碼) 但http://hostname/metrics不加載運行Web應用程序所需的JavaScript資產。 從開發工具,我看到這樣的非代理網站加載資產這樣: http://hostname:4012/assets/styles.css 雖然是去/度的代理版本嘗試加載這樣的: http://hostname/assets/styles.css

時,不會把/度追加到資產喜歡它可以得到index.html ... 我在這裏錯過了什麼? 如果這意味着什麼,webapp將運行在偵聽泊塢窗容器上的端口3000的nodejs express服務器上。

回答

0

你需要使應用程序工作方式

location /metrics/ { 
    proxy_pass http://localhost:4012/; 
    sub_filter_once off; 
    sub_filter 'http://localhost:4012/' '$scheme://$host/metrics/'; 
    sub_filter '<head>' '<head>\n<base href="hostname:4012">'; 
} 

所以添加<base>標籤到HTML幫助改變/css/metrics/css。然後絕對網址也使用sub_filter更改。

+0

這不起作用不幸 – pete

+0

詳細說明了這個問題?你需要檢查鉻開發工具,看看它是否糾正了網址 –

+0

沒有改變。開發工具中的資源的url仍然沒有附加/ metrics/ – pete