Angular HTTP资源请求(js、css)返回404错误
上下文 我在GCE的kubernetes集群上部署了angular 2应用程序。我可以通过公开的公共IP使用负载平衡器服务访问它,而不会出现任何问题。 但是,我打算在路径Angular HTTP资源请求(js、css)返回404错误,angular,nginx,kubernetes,Angular,Nginx,Kubernetes,上下文 我在GCE的kubernetes集群上部署了angular 2应用程序。我可以通过公开的公共IP使用负载平衡器服务访问它,而不会出现任何问题。 但是,我打算在路径/assessment上访问它,因此使用以下内容设置nginx反向代理 配置 $ cat nginx/frontend.conf server { listen 443; ssl on; ssl_certificate /etc/tls/cert.pem; ssl_certific
/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/“
“/etc/nginx/html/inline.508911a34e3d7fcf458e.bundle.js”失败(2:没有这样的文件或目录),客户端:10.132.0.4,服务器:,请求:“GET/inline.508911a34e3d7fcf458e.bundle.js HTTP/1.1”,主机:,引用方:https:///assessment/“
必须与nginx中定义的位置匹配
- nginx位置:
位置/评估/
- angular2应用程序index.html中的基本url:
- nginx位置:
位置/评估/
- angular2应用程序index.html中的基本url:
src=“inline.21b67490345418068f8f.bundle.js"
。此外,它不是一个单一用途的服务器,因为我想从我的nginx反向代理路由到多个API和SPA。这意味着,我的场景确实没有解决方案?!日志不一致。该日志项似乎不是路径相关的。@RichardSmith可能我误解了你的答案。我只是在根htmlI中检查了这一点ndex.html
加载的脚本/css文件不指向绝对路径:
。由于两个文件位于同一目录中,因此应该可以工作。或者我搞错了吗?您是否使用/assessment
或/assessment/
访问主页面?除非有相对路径,否则路径相对URI不起作用可能有帮助。@RichardSmith我已经在使用路径相对变量,例如src=“inline.21b67490345418068f8f.bundle.js”
。此外,它不是一个单一用途的服务器,因为我想从我的nginx反向代理路由到多个API和SPA。这意味着,我的场景确实没有解决方案?!日志不一致。该日志项似乎不是路径相关的。@RichardSmith可能我误解了你的答案。我只是在根htmlI中检查了这一点ndex.html
加载的脚本/css文件不指向绝对路径:
。由于两个文件位于同一目录中,因此应该可以工作。或者我搞错了吗?您是否使用/assessment
或/assessment/
访问主页面?除非有相对路径,否则路径相对URI不起作用e到。