Nginx配置项
```bash # nginx是以www-data这个用户的身份去运行的 user www-data; # nginx以多少个工作进程启动,auto会根据cpu核心数自动设置 worker_processes auto; # 用于记录nginx主进程的PID,便于进程管理 pid /run/nginx.pid; # nginx错误日志存放地址 error_log /var/log/nginx/error.log; # 加载nginx已启用模块的配置 include /etc/nginx/modules-enabled/*.conf; events { # 每个worker进程最大可连接数,总并发上限约等于worker_processes x worker_connections worker_connections 768; # 开启后一个worker一次性接收所有新连接,高并发时提升性能,但是可能增加单个请求的延迟 # multi_accept on ; } http { ## # Basic Settings ## # 提高文件传输效率 sendfile on; # 与sendfile配合,尽量攒满TCP包再发送,减少小包数量,提高大文件传输效率 tcp_nopush on; # MIME类型哈希表大小 types_hash_max_size 2048; # 安全配置,关闭http响应头显示nginx版本号 server_tokens off; # 隐藏Nginx服务器名称 (安全强化,推荐) server_name_in_redirect off; # 客户端请求头缓冲区大小(大并发必调) client_header_buffer_size 2k; # 客户端请求体大小限制(上传文件必配!) client_max_body_size 10m; # 默认 1m,上传图片/文件会 413 错误 # 长连接超时时间(高并发必配) keepalive_timeout 65; # 单个长连接最多处理多少请求(防攻击) keepalive_requests 100; # 客户端发送请求体超时时间 client_body_timeout 10; # 客户端发送请求头超时时间 client_header_timeout 10; # 发送响应到客户端超时时间 send_timeout 10; # 用于存储server_name的哈希表大小,当server_name很长或很多时可能报错 # server_names_hash_bucket_size 64; # 默认开启,重定向时会带上server_name,关闭后用请求头中的Host决定重定向目标 # server_name_in_redirect off; # 引入MIME类型映射表,如 .html->text/html,让浏览器正确解析文件类型 include /etc/nginx/mime.types; # 默认MIME类型,当文件扩展名在mime.types中找不到时,以此类型返回,octet-stream 未匹配MIME类型时按二进制 流返回,浏览器通常会下载处理 default_type application/octet-stream; ## # SSL Settings ## # 允许的TLS版本 建议使用TLS1.2 TLSv1.3 (TLSv1 TLSv1.1 已淘汰多年) ssl_protocols TLSv1.2 TLSv1.3; # 优先使用服务端指定的加密套件顺序,而非客户端(TLS1.2及以下配置生效,TLS1.3不受此配置影响) ssl_prefer_server_ciphers on; ## # Logging Settings ## # 自定义日志格式:包含真实IP、请求耗时、后端响应耗时(排查问题神器) log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for" ' '请求耗时:$request_time s 后端响应耗时:$upstream_response_time s'; # 访问日志路径,记录请求的IP,时间,URL,状态码,UA等,用于流量分析和问题排查 access_log /var/log/nginx/access.log; ## # Gzip Settings ## # 开启gzip压缩,文本类资源压缩后体积通常减少60%~80%,显著提升加载速度 gzip on; # 开启后根据客户端是否支持gzip返回不同的Vary:Accept-Encoding头,配合CDN缓存更友好 # gzip_vary on; # 对代理请求也压缩。设为 any 会压缩所有代理请求,但某些老旧客户端可能不支持。 # gzip_proxied any; # 压缩级别 1-9,6 是压缩率和 CPU 消耗的平衡点。级别越高压缩越小但 CPU 越高 # gzip_comp_level 6; # 分配 16 个 8KB 缓冲区用于压缩,总共 128KB # gzip_buffers 16 8k; # 只对 HTTP/1.1 及以上启用压缩(HTTP/1.0 默认不压缩) # gzip_http_version 1.1; # 指定哪些 MIME 类型需要压缩。默认已包含 text/html,通常无需手动设置 # gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript; ## # 安全响应头配置(防止 XSS、点击劫持,企业安全必备) ## add_header X-Frame-Options SAMEORIGIN always; add_header X-XSS-Protection "1; mode=block" always; add_header X-Content-Type-Options nosniff always; ## # 反向代理通用配置(对接 Java/Go/Node 后端必用) ## proxy_set_header Host $host; # 传递用户真实 IP 给后端服务器 proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 代理超时时间(防止慢请求拖垮 Nginx) proxy_connect_timeout 10s; proxy_send_timeout 30s; proxy_read_timeout 30s; ## # Virtual Host Configs ## # 加载 conf.d/ 目录下所有 .conf 文件。通常放通用配置(如反向代理、全局规则) include /etc/nginx/conf.d/*.conf; # 加载已启用的站点配置。这是 nginx 推荐的站点管理方式:sites-available/ 放所有站点,sites-enabled/ 用软链接启用需要的站点 include /etc/nginx/sites-enabled/*; } ```