Nginx 使用指南及静态文件缓存配置

Nginx 基本使用

安装 Nginx 在大多数 Linux 发行版中,可以通过包管理器安装:

# Ubuntu/Debian
sudo apt update
sudo apt install nginx

# CentOS/RHEL
sudo yum install epel-release
sudo yum install nginx
启动/停止/重启 Nginx
# 启动
sudo systemctl start nginx

# 停止
sudo systemctl stop nginx

# 重启
sudo systemctl restart nginx

# 重新加载配置(不中断服务)
sudo systemctl reload nginx

# 设置开机启动
sudo systemctl enable nginx

基本配置文件结构

Nginx 的主要配置文件通常位于:

/etc/nginx/nginx.conf- 主配置文件

/etc/nginx/conf.d/- 额外的配置文件目录

/etc/nginx/sites-available/- 可用的虚拟主机配置

/etc/nginx/sites-enabled/- 启用的虚拟主机配置(通常是 sites-available 的符号链接)

静态文件缓存配置

基本静态文件服务

server {
    listen 80;
    server_name example.com;

    root /var/www/html;
    index index.html;

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

启用静态文件缓存

http {
    # 定义缓存路径和参数
    proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m inactive=60m use_temp_path=off;

    server {
        listen 80;
        server_name example.com;

        root /var/www/html;

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

        # 静态文件缓存配置
        location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
            expires 30d;
            add_header Cache-Control "public, no-transform";

            # 可选:使用代理缓存
            proxy_cache my_cache;
            proxy_cache_valid 200 302 30d;
            proxy_cache_valid 404 1m;
            proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504;
            proxy_cache_revalidate on;
            proxy_cache_lock on;
        }
    }
}

详细缓存配置说明

​​proxy_cache_path​​ - 定义缓存存储路径和参数

/var/cache/nginx- 缓存存储目录

levels=1:2- 缓存目录层级结构

keys_zone=my_cache:10m- 定义共享内存区域名称和大小

inactive=60m- 60分钟内未被访问的缓存将被删除

use_temp_path=off- 不使用临时路径

​​expires​​ - 设置浏览器缓存时间

30d表示30天

​​add_header Cache-Control​​ - 设置HTTP缓存控制头

public- 允许中间缓存(如CDN)缓存内容

no-transform- 禁止代理修改内容

​​proxy_cache​​ - 启用代理缓存并使用指定的缓存区域

​​proxy_cache_valid​​ - 为不同响应码设置缓存时间

高级缓存控制

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

    # 启用文件缓存
    open_file_cache max=1000 inactive=20s;
    open_file_cache_valid 30s;
    open_file_cache_min_uses 2;
    open_file_cache_errors on;

    # 启用gzip压缩
    gzip_static on;
}

缓存清除

如果需要手动清除缓存,可以:

删除缓存目录内容:sudo rm -rf /var/cache/nginx/*

或者使用第三方模块如 ngx_cache_purge

性能优化建议

对于大量静态文件,考虑使用 sendfile指令

启用 gzip压缩

调整工作进程数量(根据CPU核心数)

对于SSD存储,可以禁用访问时间记录:open_file_cache中添加 noatime选项

示例优化配置:

http {
    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;

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

    open_file_cache max=200000 inactive=20s;
    open_file_cache_valid 30s;
    open_file_cache_min_uses 2;
    open_file_cache_errors on;

    # 其他配置...
}

通过以上配置,你可以有效地使用Nginx来服务和缓存静态文件,提高网站性能和用户体验。