配置文件
Nginx 的配置文件通常位于 .../nginx/nginx.conf。
基础配置示例§
# ------------------------------
# 全局配置
# ------------------------------
worker_processes auto; # 设置工作进程数,通常建议等于 CPU 核心数
# ------------------------------
# events 块:定义连接处理相关参数
# ------------------------------
events {
worker_connections 1024; # 每个 worker 进程允许的最大连接数
}
# ------------------------------
# HTTP 配置块
# ------------------------------
http {
# 常用 MIME 类型定义
include mime.types;
default_type application/octet-stream;
# 文件传输优化
sendfile on; # 高效传输静态文件
tcp_nopush on; # 避免分片发送小包
tcp_nodelay on; # 减少延迟
keepalive_timeout 65; # 长连接超时时间(秒)
# 安全和性能
server_tokens off; # 禁止显示 Nginx 版本号
gzip on; # 启用 Gzip 压缩,提高传输效率
gzip_min_length 1k; # 小于 1KB 的文件不压缩
gzip_comp_level 9; # 压缩等级 1~9
gzip_types # 压缩特定类型的文件
text/plain
text/css
application/javascript
application/json
image/svg+xml
font/woff2;
# 临时文件路径(可以统一管理缓冲区)
client_body_temp_path /temp/client_body;
proxy_temp_path /temp/proxy;
fastcgi_temp_path /temp/fastcgi;
uwsgi_temp_path /temp/uwsgi;
scgi_temp_path /temp/scgi;
# ------------------------------
# Server 配置
# ------------------------------
server {
# 监听端口
listen 80;
listen [::]:80;
# 域名
server_name example.com;
# 默认字符集
charset utf-8;
# ==============================
# 私有文件目录(需鉴权,不缓存)
# ==============================
location /private/ {
alias /var/www/private/; # 实际存放路径
autoindex on; # 启用目录浏览
autoindex_exact_size off; # 文件大小格式化显示
autoindex_localtime on; # 显示本地时间
# HTTP 基本鉴权
auth_basic "Auth Login";
auth_basic_user_file /etc/nginx/passwd.dat;
# 禁用缓存
add_header Cache-Control "no-store, no-cache, must-revalidate, private";
add_header Pragma "no-cache";
expires -1;
}
# ==============================
# 公共文件目录(浏览,不缓存)
# ==============================
location /public/ {
alias /var/www/public/;
autoindex on;
autoindex_exact_size off;
autoindex_localtime on;
# 禁用缓存
add_header Cache-Control "no-store, no-cache, must-revalidate";
add_header Pragma "no-cache";
expires -1;
}
# 网站根目录
root /var/www/html/website;
# ==============================
# 错误页面配置
# ==============================
error_page 404 /404.html; # 当请求不存在页面时返回 404.html
location = /404.html {
internal; # 内部调用,用户无法直接访问
}
# ==============================
# 主站(静态页面)
# ==============================
location / {
index index.html; # 默认首页
}
# ==============================
# 静态资源缓存(图片/图标/字体/JS/CSS)
# ==============================
location ~* \.(jpg|jpeg|png|gif|webp|svg|ico|woff2|js|css)$ {
root /var/www/html/website;
# 浏览器缓存 1 周
expires 7d;
add_header Cache-Control "public";
# 关闭访问日志(减轻 IO 压力)
access_log off;
}
}
}
其他配置§
| 配置项 | 作用 |
|---|---|
worker_processes auto; |
自动根据 CPU 核心数生成工作进程,充分利用多核 |
worker_connections |
增大允许的并发连接数(配合 worker_processes 使用) |
sendfile on; |
零拷贝发送静态文件,提高 I/O 性能 |
tcp_nopush on; |
优化大文件传输,减少分片包 |
tcp_nodelay on; |
减少小包传输延迟 |
keepalive_timeout 65; |
HTTP 长连接,减少重复 TCP 握手 |
gzip on; gzip_types ...; |
压缩文本资源,减少带宽消耗 |
open_file_cache |
缓存文件描述符,减少磁盘 I/O |
client_body_buffer_size client_max_body_size |
调整上传文件缓冲,避免频繁写磁盘 |
proxy_cache fastcgi_cache |
反向代理缓存或动态请求缓存,减轻后端压力 |
limit_req limit_conn |
限制请求频率和连接数,防止刷流量 |
server_tokens off; |
禁止显示 Nginx 版本号,减少被针对的风险 |
client_max_body_size |
限制上传文件大小,防止大文件攻击 |
limit_req zone=... |
防止请求洪水攻击(Rate Limit) |
limit_conn zone=... |
限制同一 IP 并发连接数 |
ssl_protocols TLSv1.2 TLSv1.3; |
只启用安全的 TLS 协议(HTTPS 时) |
ssl_ciphers |
强制安全加密套件 |
add_header X-Frame-Options SAMEORIGIN; |
防止点击劫持 |
add_header X-Content-Type-Options nosniff; |
防止 MIME 类型混淆攻击 |
add_header X-XSS-Protection "1; mode=block"; |
启用浏览器 XSS 防护 |
autoindex off; |
禁止目录浏览,防止敏感文件泄露 |
location ~ /\.git |
禁止访问隐藏文件或目录(如 .git / .env) |
auth_basic / auth_basic_user_file |
对私有目录启用 HTTP 鉴权 |
deny all; / allow 1.2.3.4; |
IP 访问控制 |