+
95
-

回答

在 Nginx 下访问字体文件(如 .eot、.otf、.ttf、.woff、.svg 等)遇到 404 错误的问题,通常是因为 Nginx 配置文件中未正确配置这些文件类型的 MIME 类型或路径。下面是一些常见的解决方法:

1. 配置 MIME 类型

确保 Nginx 配置文件中包含了这些文件类型的 MIME 类型定义。打开你的 Nginx 配置文件(通常是 /etc/nginx/nginx.conf 或 /etc/nginx/conf.d/default.conf),并在 http 块中添加以下内容:

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    # other configurations ...

    types {
        application/vnd.ms-fontobject    eot;
        font/opentype                    otf;
        application/x-font-ttf           ttf;
        font/woff                        woff;
        font/woff2                       woff2;
        image/svg+xml                    svg;
    }

    # other configurations ...
}
2. 确认文件路径

确保文件路径正确,并且 Nginx 有权限访问这些文件。检查 Nginx 的 root 或 alias 指令,确保其指向包含字体文件的正确目录。例如:

server {
    listen       80;
    server_name  example.com;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }

    location /fonts/ {
        root /usr/share/nginx/html;
    }
}
3. 检查文件权限

确保 Nginx 用户(通常是 nginx 或 www-data)有权限读取这些字体文件。你可以使用以下命令检查并更改权限:

sudo chown -R nginx:nginx /path/to/fonts
sudo chmod -R 755 /path/to/fonts
4. 清理缓存

如果你在配置文件中做了更改,可能需要清理浏览器缓存或者通过重启 Nginx 来应用更改:

sudo systemctl restart nginx
5. 确认文件存在

确保字体文件确实存在于服务器上的指定路径。例如,如果你的配置指向 /usr/share/nginx/html/fonts/, 确保字体文件在这个目录下:

ls /usr/share/nginx/html/fonts/
示例完整配置

这是一个完整的 Nginx 配置文件示例,确保了字体文件的正确访问:

server {
    listen       80;
    server_name  example.com;

    root   /usr/share/nginx/html;
    index  index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~* \.(eot|otf|ttf|woff|woff2|svg)$ {
        add_header Access-Control-Allow-Origin *;
        try_files $uri =404;
    }
}
6. 检查 Nginx 日志

如果上述方法都没有解决问题,检查 Nginx 错误日志(通常在 /var/log/nginx/error.log)可能会提供更多线索。查看日志以确定问题的根本原因:

tail -f /var/log/nginx/error.log

通过上述步骤,你应该能够解决在 Nginx 下访问字体文件时遇到的 404 错误问题。如果问题仍然存在,请提供更多的错误日志或配置文件内容,以便进一步诊断。

网友回复

我知道答案,我要回答