server {
listen 80;
server_name example.com;
root /var/www/html;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
keepalive_requests 1000;
client_body_timeout 12;
client_header_timeout 12;
send_timeout 10;
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
expires 30d;
add_header Cache-Control "public, no-transform";
access_log off;
}
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_proxied any;
gzip_vary on;
gzip_comp_level 6;
gzip_buffers 16 8k;
worker_rlimit_nofile 100000;
worker_processes auto;
worker_connections 4096;
multi_accept on;
use epoll;
location /videos/ {
aio on;
directio 4m;
output_buffers 1 2m;
}
server_tokens off;
add_header X-Frame-Options SAMEORIGIN;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
proxy_cache_path /dev/shm/nginx_cache levels=1:2 keys_zone=STATIC:10m inactive=24h max_size=1g use_temp_path=off;
location ~* \.js$ {
gzip_static on;
try_files $uri.gz $uri =404;
}
listen 443 ssl http2;
brotli on;
brotli_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
location /large-files/ {
sendfile on;
aio threads;
directio 8m;
}
location /nginx_status {
stub_status on;
access_log off;
allow 127.0.0.1;
deny all;
}
使用ngx_http_slice_module
模块分片传输大文件
定期检查并优化配置文件:
nginx -t
以上配置可根据实际业务需求进行调整组合,建议在修改配置后进行压力测试以验证优化效果。