2017-04-12 150 views
1

上下文HTTP請求返回404錯誤

我我kubernetes上GCE羣集上部署的角2的應用程序。我可以使用負載平衡器服務通過公開的IP訪問它,而不會有任何問題。 但是,我打算在路徑/assessment上訪問它,因此設置了具有以下內容的nginx反向代理。

配置

$ cat nginx/frontend.conf 
server { 
    listen 443; 
    ssl on; 
    ssl_certificate  /etc/tls/cert.pem; 
    ssl_certificate_key /etc/tls/key.pem; 
    location /assessment/ { 
     proxy_pass http://participation-frontend.default.svc.cluster.local/; 
    } 

    // etc. 
} 

症狀

雖然HTML渲染,資源(CSS,JS)將不會被發現和404將代替返回。任何想法爲什麼發生這種情況 我也注意到,如果我將位置設置爲/而不是一切都完美。

日誌

正如你可以在日誌摘錄波紋管看到,一個文件的請求將直接在root下執行。在這種情況下:的/assessment/GET /inline.508911a34e3d7fcf458e.bundle.js/inline.508911a34e3d7fcf458e.bundle.js代替

「/etc/nginx/html/inline.508911a34e3d7fcf458e.bundle.js」 failed (2: No such file or directory), client: 10.132.0.4, server: , request: 「GET /inline.508911a34e3d7fcf458e.bundle.js HTTP/1.1", host: 「<nginx-public-IP>」, referrer: 「https://<nginx-public-IP>/assessment/「 
+1

[本答案](http://stackoverflow.com/questions/43057099/why-does -angular2-webpack-starter-work-with-localhost3000-but-not-with/43065258#43065258)可能有所幫助。 –

+0

@RichardSmith我已經在使用路徑相關變量,例如'SRC = 「inline.21b67490345418068f8f.bundle.js」'。另外,它不是一個單一用途的服務器,因爲我想從我的nginx反向代理路由到幾個API和SPA。那意味着,我的場景真的沒有解決方案?! – Ronin

+0

日誌不同意。該日誌條目似乎不是路徑相對的。 –

回答

0

html5 base url必須匹配在nginx的定義的位置。

  • nginx的位置:在angular2應用程式的index.html location /assessment/
  • 基URL:<base href="/assessment/">