Nginx将CSS文件加载为文本/纯文本

Daw*_*ski 1 css mime nginx

我将nginx配置为仅加载静态文件,但我不知道为什么.css文件被解释为文本/纯文本-最终浏览器无法加载它。

Resource interpreted as Stylesheet but transferred with MIME type text/plain: "http://localhost:13000/styles.css".
Run Code Online (Sandbox Code Playgroud)

当我在CSS文件的Web浏览器中检查响应标头时:

Content-Type: text/plain
Run Code Online (Sandbox Code Playgroud)

我知道在堆栈上我们有很多问题,我已经读过它们,但仍然无法正常工作。

在html文件中,我刚刚导入了CSS:

<link href="styles.css" rel="stylesheet" type="text/css"/>
Run Code Online (Sandbox Code Playgroud)

我的/etc/nginx/nginx.conf是:

worker_processes        1;
events {
    worker_connections  512;
}

http {
    server {
        listen       80;
        server_name  0.0.0.0:80;
        include /etc/nginx/mime.types;
        root   /project/app;

        location ~* ^.+\.(js|css)$ {
            expires 10d;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我尝试了没有任何位置部分或尝试:

location ~ \.css {
 add_header Content-Type text/css;
}
Run Code Online (Sandbox Code Playgroud)

在其他线程的一些响应中,我看到这是必需的:

default_type  application/octet-stream;
include       /etc/nginx/mime.types;
Run Code Online (Sandbox Code Playgroud)

我添加了http一部分,server然后再添加到中location,仍然没有帮助。

还有什么我可以解决的吗?

Daw*_*ski 7

万一有人遇到相同的问题并使用docker,以防万一。这是关键词-我将docker与图像nginx:latest一起使用会导致问题,我将其更改为nginx:1.14.2,并且一切正常。

在HTML中,导入CSS:

<link href="styles/styles.css" rel="stylesheet" type="text/css"/>
Run Code Online (Sandbox Code Playgroud)

我的nginx.conf配置:

worker_processes        1;
events {
    worker_connections  512;
}

http {
    include    mime.types;
    sendfile on;
    server {
        listen       80;
        server_name  0.0.0.0:80;
        root   /project/app;
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 字符串“包括 mime.types;” 应该位于 http 部分内,而不是服务器内。在新配置中,情况就是如此,因此可以正常工作。 (6认同)
  • 只需添加:“包括 mime.types;” 和“发送文件;” 为我工作 (4认同)