跳到主要内容

Nginx 静态文件服务

介绍

Nginx 是一个高性能的 HTTP 服务器和反向代理服务器,广泛用于提供静态文件服务。静态文件是指那些不会在服务器端动态生成的文件,例如 HTML、CSS、JavaScript、图片等。Nginx 以其高效的处理能力和低资源消耗而闻名,非常适合用于静态文件的托管。

在本教程中,我们将逐步介绍如何配置 Nginx 以提供静态文件服务,并探讨一些优化技巧和实际应用场景。

配置Nginx提供静态文件服务

基本配置

首先,我们需要在 Nginx 配置文件中定义一个服务器块(server block),并指定静态文件的根目录。

nginx
server {
listen 80;
server_name example.com;

location / {
root /var/www/html;
index index.html;
}
}

在这个配置中:

  • listen 80; 表示 Nginx 监听 80 端口。
  • server_name example.com; 指定了服务器的域名。
  • location / { ... } 定义了根路径的处理方式。
  • root /var/www/html; 指定了静态文件的根目录。
  • index index.html; 指定了默认的索引文件。

测试配置

在应用配置之前,可以使用以下命令测试配置文件的语法是否正确:

bash
nginx -t

如果配置正确,输出应该类似于:

bash
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

重启Nginx

配置测试通过后,可以重启 Nginx 以应用新的配置:

bash
sudo systemctl restart nginx

优化静态文件服务

启用Gzip压缩

Gzip 压缩可以显著减少传输的文件大小,从而提高加载速度。可以在 Nginx 配置中启用 Gzip 压缩:

nginx
gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

设置缓存头

通过设置缓存头,可以减少客户端对静态文件的重复请求:

nginx
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
expires 30d;
add_header Cache-Control "public, no-transform";
}

在这个配置中,expires 30d; 表示静态文件在客户端缓存 30 天。

实际应用场景

托管静态网站

假设你有一个静态网站,包含 HTML、CSS 和 JavaScript 文件。你可以将这些文件放在 /var/www/html 目录下,并使用上述 Nginx 配置来托管这个网站。

提供图片服务

如果你有一个图片库,可以将图片放在 /var/www/images 目录下,并使用以下配置来提供图片服务:

nginx
server {
listen 80;
server_name images.example.com;

location / {
root /var/www/images;
}
}

总结

通过本教程,你学会了如何使用 Nginx 提供静态文件服务。我们介绍了基本的配置方法,并探讨了一些优化技巧,如启用 Gzip 压缩和设置缓存头。此外,我们还讨论了实际应用场景,如托管静态网站和提供图片服务。

附加资源

练习

  1. 配置 Nginx 托管一个包含 HTML、CSS 和 JavaScript 文件的静态网站。
  2. 启用 Gzip 压缩并测试网站加载速度的变化。
  3. 设置缓存头,观察浏览器缓存行为的变化。

通过完成这些练习,你将更深入地理解 Nginx 静态文件服务的配置和优化。