静态资源通常包括HTML文件、CSS样式表、JavaScript脚本、图片、视频等。Nginx通过简单的配置即可处理这些请求。
在Nginx的配置文件中,通常位于/etc/nginx/nginx.conf
或/etc/nginx/conf.d/default.conf
,找到server
块,添加以下内容:
server {
listen 80;
server_name example.com;
location /static/ {
alias /path/to/your/static/files/;
autoindex off;
}
}
listen 80
:指定Nginx监听80端口。server_name
:设置域名或IP地址。location /static/
:定义静态资源的URL路径。alias
:指定静态资源在服务器上的实际路径。autoindex off
:禁止目录列表,增强安全性。Gzip压缩可以减少传输数据量,提升加载速度。在Nginx配置文件中添加以下内容:
gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
gzip_min_length 1024;
gzip_comp_level 6;
gzip on
:启用Gzip压缩。gzip_types
:指定需要压缩的文件类型。gzip_min_length
:设置压缩的最小文件大小。gzip_comp_level
:设置压缩级别(1-9),数值越高压缩率越大,但消耗更多CPU资源。通过配置缓存头,可以减少重复请求,提升用户体验。在location
块中添加以下内容:
location /static/ {
alias /path/to/your/static/files/;
expires 30d;
add_header Cache-Control "public, no-transform";
}
expires 30d
:设置静态资源缓存有效期为30天。add_header Cache-Control
:添加缓存控制头,public
表示资源可被代理服务器缓存,no-transform
禁止中间代理修改资源。启用sendfile
和tcp_nopush
可以提升文件传输效率:
sendfile on;
tcp_nopush on;
tcp_nodelay on;
sendfile on
:启用高效文件传输模式。tcp_nopush on
:优化数据包发送,减少网络拥塞。tcp_nodelay on
:禁用Nagle算法,降低延迟。为了防止恶意请求消耗服务器资源,可以限制静态资源的访问频率:
limit_req_zone $binary_remote_addr zone=static:10m rate=10r/s;
location /static/ {
alias /path/to/your/static/files/;
limit_req zone=static burst=20;
}
limit_req_zone
:定义限流区域,10m
表示共享内存大小,rate=10r/s
限制每秒10次请求。limit_req
:应用限流规则,burst=20
允许突发20个请求。HTTP/2支持多路复用,可以显著提升静态资源的加载速度。在server
块中添加:
listen 443 ssl http2;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;
http2
:启用HTTP/2协议。ssl_certificate
和ssl_certificate_key
:指定SSL证书和私钥路径。防盗链可以防止其他网站直接引用你的静态资源。在location
块中添加以下内容:
location /static/ {
alias /path/to/your/static/files/;
valid_referers none blocked example.com *.example.com;
if ($invalid_referer) {
return 403;
}
}
valid_referers
:定义合法的来源域名。if ($invalid_referer)
:如果来源不合法,返回403禁止访问。通过配置多个Nginx服务器,可以实现静态资源的分布式缓存。示例配置如下:
proxy_cache_path /path/to/cache levels=1:2 keys_zone=static_cache:10m inactive=60m;
server {
listen 80;
server_name cdn.example.com;
location /static/ {
proxy_pass http://origin.example.com;
proxy_cache static_cache;
proxy_cache_valid 200 30d;
proxy_cache_use_stale error timeout invalid_header updating;
}
}
proxy_cache_path
:定义缓存路径和区域。proxy_pass
:指定源服务器地址。proxy_cache_valid
:设置缓存有效期。proxy_cache_use_stale
:在特定情况下使用过期缓存。通过Nginx日志可以监控静态资源的访问情况。在server
块中添加日志配置:
access_log /var/log/nginx/static_access.log;
error_log /var/log/nginx/static_error.log;
使用工具如GoAccess或ELK分析日志,优化资源配置。
为静态资源目录设置严格的权限:
chown -R nginx:nginx /path/to/your/static/files/
chmod -R 755 /path/to/your/static/files/
在Nginx配置中禁用敏感文件访问:
location ~* \.(htaccess|htpasswd|ini|log|sh)$ {
deny all;
}