【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 的日志管理,敬请期待!



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。