Nginx 服务用户与防盗链配置
目录
Nginx 服务用户与防盗链配置
1. 隐藏版本号
1.1 配置方法
1.2 生效与验证
2. 修改当前程序账号
2.1 操作步骤
3. 缓存时间
3.1 配置方法
3.2 说明
4. 日志分割
4.1 实现方式(脚本自动分割)
5. 连接超时时间
5.1 核心超时指令(配置在http或server块)
5.2 说明
6. 更改进程数
6.1 配置方法
6.2 优化建议
7. 网页压缩
7.1 配置方法(在http块中添加)
7.2 验证
8. 配置防盗链
8.1 配置方法(在server块或location块中添加)
8.2 指令说明
8.3 生效与验证
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,本服务器或白名单域名可正常访问。