2017-04-12 151 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/">