HTTP资源请求(js,css)返回404错误

时间:2017-04-12 01:28:56

标签: angular nginx kubernetes

上下文

我在GCE上的kubernetes集群上部署了一个有角度的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上执行。在这种情况下:/inline.508911a34e3d7fcf458e.bundle.js而不是/assessment/GET /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 个答案:

答案 0 :(得分:0)

html5 base url必须与nginx中定义的位置匹配。

  • nginx位置:location /assessment/
  • angular2 app的index.html中的基本网址:<base href="/assessment/">