首页 > 解决方案 > 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保存样式表的目录,对吗?我有什么误解?

标签: cssnginxstatic

解决方案


不确定这是否是解决方案,但希望可以尝试一些事情。

  1. 将您的 docker 文件更改为

COPY assets /www/media

  1. 在您的评论中,您说过您可以在 /www/media 中看到这些文件。但是您正试图在 /assets 中访问它们。你在 nginx 中正确配置了吗?也许试试这个
location /assets/ {
    alias /www/media/;
  }
  1. 我要提到的最后一件事是权限。容器中文件的权限是什么?ls -la会告诉你这个。他们应该是755我相信 Nignx 的。

希望这对您有所帮助。


推荐阅读