目录
8.1 配置方法(在server块或location块中添加)
Nginx 服务用户与防盗链配置
1. 隐藏版本号
Nginx 默认会在响应头(如Server: nginx/1.24.0)中显示具体版本号,这可能泄露服务器信息,增加安全风险。隐藏版本号可减少攻击者利用特定版本漏洞的可能性。
1.1 配置方法
在 Nginx 主配置文件(nginx.conf)的http块中添加server_tokens指令:
| http { ... server_tokens off; # 关闭版本号显示 ... } |

1.2 生效与验证
- 重载配置:systemctl reload nginx 或 nginx -s reload。
- 验证:通过curl -I 服务器IP查看响应头,Server: nginx表示版本号已隐藏(无具体版本信
- 息)。

2. 修改当前程序账号
Nginx 默认以nginx用户和用户组运行,若该账号权限配置不当,可能导致安全隐患。修改运行账号可遵循 “最小权限原则”,限制程序对系统资源的访问范围。
2.1 操作步骤
1.创建专用用户组和用户
| groupadd -r nginx_user # -r表示系统组 useradd -r -g nginx_user /sbin/nologin nginx_user # -r系统用户 |
2.修改 Nginx 配置:在主配置文件的全局块中指定新用户和组:
| user nginx_user nginx_user; # 用户名 用户组 worker_processes auto; |

重启生效:systemctl restart nginx。
3. 缓存时间
对静态资源(如图片、CSS、JS 文件)设置缓存时间,可减少重复请求,降低服务器压力,同时加快客户端二次访问速度(浏览器直接从本地缓存加载资源)。
3.1 配置方法
在server块或location块中通过expires指令设置缓存时间,常见场景如下:
| server { ... location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ { # 匹配静态文件后缀 root /usr/share/nginx/html; expires 1d; # 缓存1天(单位支持s秒、m分、h时、d天、w周、M月、y年) } ... } |

3.2 说明
- ~*表示不区分大小写匹配文件后缀。
- max-age值需与expires时间一致(30 天 = 30×24×3600=2592000 秒)。
- 动态资源(如 PHP 页面)不建议设置长缓存,可根据需求设为expires -1(不缓存)。

4. 日志分割
Nginx 默认将所有访问日志写入一个文件(如access.log),长期运行会导致文件过大,难以查看和备份。日志分割可按时间(如每日)拆分日志,便于管理和归档。
4.1 实现方式(脚本自动分割)
- 创建分割脚本(如/usr/local/nginx/sbin/logrotate.sh):
| #!/bin/bash # Filename: fenge.sh |

- 添加执行权限:chmod +x /usr/local/nginx/sbin/logrotate.sh。
- 设置定时任务(通过crontab每日凌晨执行):
| crontab -e # 添加以下内容(每天1点执行) 0 1 * * * /usr/local/nginx/sbin/logrotate.sh |
5. 连接超时时间
Nginx 通过超时时间控制客户端连接的生命周期,合理设置可避免无效连接占用服务器资源,尤其适用于高并发场景。
5.1 核心超时指令(配置在http或server块)
| http { ... keepalive_timeout 65 180; 三次握手的超时时间 ... } #keepalive_timeout ##client_header_timeout ###client_body_timeout |
5.2 说明
- 超时时间需根据业务场景调整(如静态资源服务可设较短,文件上传服务可适当延长)。
- keepalive_timeout过短会增加连接建立开销,过长可能浪费资源,建议 50-70 秒。
6. 更改进程数
Nginx 的工作进程(worker_processes)负责处理客户端请求,进程数设置是否合理直接影响并发处理能力。默认值为 1,需根据服务器 CPU 核心数调整。
6.1 配置方法
在主配置文件的全局块中修改:
| # 自动匹配CPU核心数(推荐,无需手动计算) worker_processes auto; # 或手动指定(如4核CPU设为4) # worker_processes 4; |
6.2 优化建议
- 进程数通常设为与 CPU 核心数相同(避免进程切换开销)。
- 若服务器为多核 CPU,可结合worker_cpu_affinity绑定进程到特定核心(减少资源竞争):
| worker_processes 4; # 4核CPU worker_cpu_affinity 0001 0010 0100 1000; # 分别绑定到1-4核(二进制表示) |
7. 网页压缩
启用 Gzip 压缩可减小传输数据量(尤其是文本类资源,压缩率可达 50% 以上),加快页面加载速度,节省带宽。
7.1 配置方法(在http块中添加)
| http { ... gzip on; # 开启Gzip压缩 gzip_min_length 1k; # 文件大小超过1KB才压缩(小文件压缩收益低) gzip_buffers 4 64k; # 压缩缓冲区大小 gzip_http_version 1.1; # 支持的HTTP版本 gzip_comp_level 5; # 压缩等级(1-9,等级越高压缩率越高,CPU消耗越大) gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript; # 需压缩的文件类型 gzip_vary on; # 向客户端发送Vary: Accept-Encoding头,告知支持压缩 ... } |
7.2 验证
- 在Linux系统中,打开浏览器,右击点查看元素
选择 网络 ---> 选择 HTML、WS、其他
访问 http://192.168.10.23 ,双击200响应消息查看响应头中包含 Content-Encoding: gzip 
8. 配置防盗链
防盗链用于阻止其他网站直接引用本服务器的资源(如图片、视频),避免带宽被非法占用。其原理是通过验证请求的Referer(来源页面)判断是否为合法请求。
8.1 配置方法(在server块或location块中添加)
| server { ... location ~* \.(jpg|jpeg|png|gif|mp4)$ { # 对图片、视频等资源防盗链 root /usr/share/nginx/html; # 允许自身域名和指定白名单域名访问(空Referer表示直接访问,如浏览器输入图片URL) valid_referers none blocked server_names *.example.com; # 非法请求返回403或指定替代图片 if ($invalid_referer) { return 403; # 或rewrite ^/ /forbidden.png last;(返回自定义图片) } } ... } |
8.2 指令说明
- valid_referers:定义合法的来源,none允许空 Referer,blocked允许被防火墙修改过的 Referer,server_names允许自身域名,*.example.com允许指定域名及子域名。
- $invalid_referer:内置变量,当请求来源不在valid_referers中时为true。
8.3 生效与验证
- 重载配置后,通过其他网站引用资源会返回 403,本服务器或白名单域名可正常访问。
8101

被折叠的 条评论
为什么被折叠?



