css - Nginx pod 不提供 css 文件
问题描述
我有一个在 kubernetes 中运行的 webapp。我想从 nginx pod 提供静态文件,在我的例子中是 css。从应用程序中,我定义 css 文件位置,如下所示:
<link rel="stylesheet" href="assets/css/stylesheet.css" type="text/css">
在构建 docker 映像时,我将 css 文件复制到www/media/
nginx 配置中并指出:
FROM nginx
RUN rm /etc/nginx/conf.d/default.conf
COPY config/default.conf /etc/nginx/conf.d/default.template
COPY assets/ /www/media
EXPOSE 80
这是nginx配置:
server {
listen 0.0.0.0:80;
server_name localhost;
location / {
proxy_pass http://${FLASK_APP}:8080/;
}
location ~ /assets {
root /www/media;
}
}
我已经确认可以在 nginx pod 下找到该文件/www/media/css/stylesheet.css
,但是我无法从浏览器或应用程序本身访问它。我得到的错误是这样的:
GET http://192.168.99.106:30604/assets/css/stylesheet.css net::ERR_ABORTED 404 (Not Found)
/assets
应该指向www/media
保存样式表的目录,对吗?我有什么误解?
解决方案
不确定这是否是解决方案,但希望可以尝试一些事情。
- 将您的 docker 文件更改为
COPY assets /www/media
- 在您的评论中,您说过您可以在 /www/media 中看到这些文件。但是您正试图在 /assets 中访问它们。你在 nginx 中正确配置了吗?也许试试这个
location /assets/ {
alias /www/media/;
}
- 我要提到的最后一件事是权限。容器中文件的权限是什么?
ls -la
会告诉你这个。他们应该是755
我相信 Nignx 的。
希望这对您有所帮助。
推荐阅读
- recursion - 递归多态类型结构的更好表示
- node.js - 当 URL 参数与 Express 中的正则表达式不匹配时捕获错误
- php - 我无法让我的 if / else 语句显示 the_header_image_tag 与否。WordPress
- java - 如何使用 /src/main/resources 内嵌套文件夹中的属性文件?
- jenkins-pipeline - 如何使用 Jenkins 声明性脚本获取 JIRA 票号
- mongodb - 从 mongodb 中删除以前添加的对象
- java - 如何在 Java 中裁剪调整大小的图像?
- ibm-midrange - 在 iSeries (AS/400) 上的 RPGLE 中打印上标/下标
- java - 在 xpath 查询中获取具有相同属性的第一个元素
- wordpress - 将 WordPress 登录用户详细信息共享到另一个应用程序