Nginx是一个高性能的HTTP和反向代理服务器,它也可以高效的静态文件服务器。以下是一些优化Nginx以提供更好的静态文件服务的建议:
使用合适的MIME类型:
确保为不同类型的文件设置了正确的MIME类型。这可以通过在Nginx配置文件中添加types指令来实现。
types {
    text/html html htm;
    text/css css;
    application/javascript js;
    image/png png;
    image/jpeg jpg jpeg;
    # 添加其他需要的MIME类型
}
启用Gzip压缩: 对于文本文件,如HTML、CSS和JavaScript,启用Gzip压缩可以显著减少传输数据的大小,从而加快加载速度。
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";
}
减少文件查找次数:
使用try_files指令来减少文件查找次数,提高文件服务的效率。
location / {
    try_files $uri $uri/ =404;
}
使用sendfile:
sendfile指令可以减少数据在内核空间和用户空间之间的复制次数,从而提高文件传输效率。
sendfile on;
调整文件描述符限制:
确保Nginx有足够的文件描述符限制来处理并发连接。这可以通过修改系统配置文件(如/etc/security/limits.conf)来实现。
nginx soft nofile 10240;
nginx hard nofile 20480;
使用keepalive: 启用keepalive连接可以减少TCP连接的建立和关闭次数,从而提高性能。
http {
    keepalive_timeout 65;
    keepalive_requests 100;
}
优化日志记录: 减少不必要的日志记录,或者将日志记录到单独的文件中,以减少对性能的影响。
access_log off;
error_log /var/log/nginx/error.log crit;
使用HTTP/2: 如果客户端支持HTTP/2,启用它可以提高多路复用和头部压缩的效率。
server {
    listen 443 ssl http2;
    # 其他SSL配置
}
安全配置: 确保Nginx配置了适当的安全措施,如限制请求大小、防止DDoS攻击等。
client_max_body_size 50M;
limit_req_zone $binary_remote_addr zone=mylimit:10m rate=1r/s;
通过上述优化措施,可以显著提高Nginx作为静态文件服务器的性能和效率。记得在修改配置文件后重启Nginx服务以使更改生效。