在 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/fonts4. 清理缓存
如果你在配置文件中做了更改,可能需要清理浏览器缓存或者通过重启 Nginx 来应用更改:
sudo systemctl restart nginx5. 确认文件存在
确保字体文件确实存在于服务器上的指定路径。例如,如果你的配置指向 /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 错误问题。如果问题仍然存在,请提供更多的错误日志或配置文件内容,以便进一步诊断。
网友回复


