添加--base-href后,Angular代码无法在PCF(Nginx构建包)部署
问题解决:Angular添加base-href后PCF Nginx部署出现404
核心问题分析
你的Nginx配置里的root指令使用有误:当location /app-name/搭配root /usr/share/nginx/html/app-name时,Nginx会自动把location的路径追加到root路径后面,实际查找资源的路径变成/usr/share/nginx/html/app-name/app-name/,但你的Angular构建产物是放在/usr/share/nginx/html/app-name/下,导致静态资源找不到,触发404错误。
修正后的Nginx配置(二选一)
方案一:用alias指令替换root
location /app-name/ { alias /usr/share/nginx/html/app-name/; try_files $uri $uri/ /app-name/index.html; }
alias会直接把location匹配的路径替换为指定目录,不会追加路径,请求/app-name/main.js时,Nginx会正确到/usr/share/nginx/html/app-name/main.js查找资源。
方案二:调整root的基础路径
location /app-name/ { root /usr/share/nginx/html; try_files $uri $uri/ /app-name/index.html; }
把root设为/usr/share/nginx/html后,请求/app-name/main.js时,Nginx会去/usr/share/nginx/html/app-name/main.js查找,匹配你的构建产物目录结构。
额外检查点
- 确认PCF的Nginx容器内,
/usr/share/nginx/html/app-name/目录下存在Angular构建后的所有文件(index.html、各类chunk文件等) - 检查Angular构建后的index.html中,是否正确生成了
<base href="/app-name/">标签
内容的提问来源于stack exchange,提问作者bharath pn
相关产品推荐
相关产品推荐

