【Nginx 入门】7、静态文件服务
一只小爪磕 2024-08-29 13:37:02 阅读 76
【Nginx 入门】静态文件服务
系列文章目录
【Nginx 入门】1、Nginx 简介
【Nginx 入门】2、Nginx 安装与基本配置
【Nginx 入门】3、Nginx 基本命令
【Nginx 入门】4、Nginx 配置语法
【Nginx 入门】5、Nginx 处理请求的流程
【Nginx 入门】6、Nginx 反向代理
【Nginx 入门】7、静态文件服务(本文)
【Nginx 入门】8、Nginx 日志管理
Nginx 在处理静态文件(如 HTML、CSS、JavaScript 和图像文件)时非常高效。它可以直接从文件系统中读取静态文件并返回给客户端,而不需要经过复杂的处理流程。在本章中,我们将详细介绍如何使用 Nginx 配置和优化静态文件服务。
1. 配置静态文件服务
1.1 基本配置
下面是一个基本的 Nginx 配置示例,用于提供静态文件服务:
<code>server {
listen 80;
server_name example.com;
root /usr/share/nginx/html;
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
}
在这个配置中:
listen 80;
:Nginx 监听 80 端口。server_name example.com;
:配置虚拟主机。root /usr/share/nginx/html;
:指定站点的根目录。index index.html index.htm;
:定义默认的首页文件。location /
:匹配所有 URI,使用 try_files
指令查找文件,如果找不到则返回 404 错误。
1.2 处理特定文件类型
你可以为特定的文件类型配置不同的处理方式。例如,为图像文件设置单独的目录:
server {
listen 80;
server_name example.com;
root /usr/share/nginx/html;
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
location /images/ {
root /data;
}
}
在这个配置中,Nginx 将 /images/
路径映射到 /data
目录。
2. 优化静态文件服务
2.1 启用 Gzip 压缩
启用 Gzip 压缩可以减少传输的数据量,提高页面加载速度。下面是一个配置示例:
http {
gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
gzip_min_length 256;
gzip_comp_level 5;
}
在这个配置中:
gzip on;
:启用 Gzip 压缩。gzip_types
:指定需要压缩的 MIME 类型。gzip_min_length
:设置启用压缩的最小数据长度。gzip_comp_level
:设置 Gzip 压缩级别,范围是 1 到 9,数字越大压缩比越高,但消耗的 CPU 资源也越多。
2.2 设置缓存头
为静态文件设置缓存头可以减少重复请求,提高性能。下面是一个配置示例:
server {
listen 80;
server_name example.com;
root /usr/share/nginx/html;
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
expires 30d;
add_header Cache-Control "public, no-transform";
}
}
在这个配置中:
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$
:匹配常见的静态文件类型。expires 30d;
:设置缓存时间为 30 天。add_header Cache-Control "public, no-transform";
:添加缓存控制头。
2.3 使用 sendfile
指令
Nginx 提供了 sendfile
指令,可以直接从文件系统读取文件并发送给客户端,提高文件传输效率:
http {
sendfile on;
tcp_nopush on;
tcp_nodelay on;
}
在这个配置中:
sendfile on;
:启用高效文件传输模式。tcp_nopush on;
和 tcp_nodelay on;
:优化 TCP 传输。
3. 示例配置
下面是一个完整的 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 /images/ {
root /data;
}
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
expires 30d;
add_header Cache-Control "public, no-transform";
}
}
http {
gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
gzip_min_length 256;
gzip_comp_level 5;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
}
在这个示例中:
配置了基本的静态文件服务。为图像文件设置了单独的目录。启用了 Gzip 压缩和缓存头。启用了高效文件传输模式 sendfile
。
4. 常用指令
root
指定站点的根目录。例如:
root /usr/share/nginx/html;
index
指定默认的首页文件。例如:
index index.html index.htm;
try_files
按照顺序匹配文件路径,找不到则返回错误。例如:
try_files $uri $uri/ =404;
expires
设置缓存时间。例如:
expires 30d;
add_header
添加 HTTP 响应头。例如:
add_header Cache-Control "public, no-transform";
sendfile
启用高效文件传输模式。例如:
sendfile on;
gzip
启用 Gzip 压缩。例如:
gzip on;
gzip_types
指定需要压缩的 MIME 类型。例如:
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
5. 总结
在本章中,我们详细介绍了如何使用 Nginx 配置和优化静态文件服务。通过这些配置,你可以高效地提供静态文件,提高网站的性能和用户体验。在接下来的教程中,我们将探讨 Nginx 的日志管理,敬请期待!
声明
本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。