Nginx 优化与防盗链配置指南

1. 隐藏版本号

操作方法:

1.1修改配置文件方式:

复制代码
# 编辑nginx配置文件
vim /usr/local/nginx/conf/nginx.conf

# 在http块中添加
http {
    server_tokens off;  # 关闭版本号显示
    ...
}

1.2修改源码方式:

复制代码
# 修改nginx.h文件
vim /opt/nginx-1.12.0/src/core/nginx.h
#define NGINX_VERSION "1.1.1"  # 修改版本号
#define NGINX_VER "IIS" NGINX_VERSION  # 修改服务器类型

# 重新编译安装
cd /opt/nginx-1.12.0/
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module
make && make install

验证方法:

复制代码
systemctl restart nginx
curl -I http://192.168.88.200

2. 修改用户与组

操作方法:

复制代码
# 编辑nginx配置文件
vim /usr/local/nginx/conf/nginx.conf

# 修改用户和组
user nginx nginx;  # 取消注释并修改

验证方法:

复制代码
systemctl restart nginx
ps aux | grep nginx  # 主进程由root创建,子进程由nginx创建

3. 缓存时间设置

操作方法:

复制代码
# 编辑nginx配置文件
vim /usr/local/nginx/conf/nginx.conf

# 添加图片缓存设置
location ~ \.(gif|jpg|jepg|png|bmp|ico)$ {
    root html;
    expires 1d;  # 设置缓存时间为1天
}

验证方法:

复制代码
systemctl restart nginx
# 浏览器访问测试,查看响应头中的Cache-Control:max-age=86400

4. 日志切割

操作方法:

复制代码
# 创建日志切割脚本
vim /opt/fenge.sh

#!/bin/bash
day=$(date -d "-1 day" "+%Y%m%d")
logs_path="/var/log/nginx"
pid_path="/usr/local/nginx/logs/nginx.pid"
[ -d $logs_path ] || mkdir -p $logs_path
mv /usr/local/nginx/logs/access.log ${logs_path}/kgc.com-access.log-$day
kill -USR1 $(cat $pid_path)
find $logs_path -mtime +30 -exec rm -rf {} \;

# 设置定时任务
chmod +x /opt/fenge.sh
crontab -e
0 1 * * * /opt/fenge.sh

5. 连接超时设置

操作方法:

复制代码
# 编辑nginx配置文件
vim /usr/local/nginx/conf/nginx.conf

http {
    keepalive_timeout 65 180;    # 三次握手的超时时间
    client_header_timeout 80;    # 等待客户端发送请求头的超时时间
    client_body_timeout 80;      # 设置客户端发送请求体的超时时间
    ...
}

6. 更改进程数

操作方法:

复制代码
# 编辑nginx配置文件
vim /usr/local/nginx/conf/nginx.conf

# 根据CPU核数设置工作进程数
worker_processes 2;              # 修改为核数相同或者2倍
worker_cpu_affinity 01 10;       # 设置CPU亲和性

检查方法:

复制代码
cat /proc/cpuinfo | grep -c "physical id"  # 查看CPU核数
ps aux | grep nginx                        # 查看nginx进程数

7. 配置网页压缩

操作方法:

复制代码
# 编辑nginx配置文件
vim /usr/local/nginx/conf/nginx.conf

http {
    gzip on;                            # 开启gzip压缩
    gzip_min_length 1k;                 # 最小压缩文件大小
    gzip_buffers 4 64k;                 # 压缩缓冲区
    gzip_http_version 1.1;              # 压缩版本
    gzip_comp_level 6;                  # 压缩比率(1-9)
    gzip_vary on;                       # 支持前端缓存
    gzip_types text/plain text/javascript application/x-javascript text/css text/xml application/xml application/xml+rss image/jpg image/jpeg image/png image/gif application/x-httpd-php application/javascript application/json;
    ...
}

验证方法:

复制代码
systemctl restart nginx
# 浏览器查看响应头中是否包含Content-Encoding: gzip

8. 配置防盗链

操作方法:

复制代码
# 编辑nginx配置文件
vim /usr/local/nginx/conf/nginx.conf

server {
    location ~* \.(jpg|gif|swf)$ {
        valid_referers none blocked *.kgc.com kgc.com;
        if ($invalid_referer) {
            rewrite ^/ http://www.kgc.com/error.png;
            # return 403;
        }
    }
    ...
}

配置说明:

  • ~* \.(jpg|gif|swf)$:匹配不区分大小写的图片文件

  • valid_referers:设置信任的网站

  • none:允许没有Referer字段的请求

  • blocked:允许不带协议的请求

  • *.kgc.com:只允许来自指定域名的请求

主机配置:

复制代码
# 源主机(192.168.10.23)配置
echo "192.168.10.23 www.kgc.com" >> /etc/hosts

# 盗链主机(192.168.10.80)配置
echo "192.168.10.23 www.kgc.com" >> /etc/hosts
echo "192.168.10.80 www.benet.com" >> /etc/hosts
相关推荐
闲猫3 小时前
Spring AI 对接Deepseek ChatModel 聊天对话
java·前端·spring
葫芦和十三4 小时前
图解 MongoDB 28|块与迁移:balancer 怎么均衡数据
后端
葫芦和十三4 小时前
图解 MongoDB 27|分片策略:范围分片 vs 哈希分片
后端·mongodb·agent
paopaokaka_luck5 小时前
英语单词学习系统的设计与实现(基于艾宾浩斯遗忘曲线的智能复习机制、语音朗读、多题型测试与错题自动收录、Echarts图形化分析)
vue.js·spring boot·后端·echarts
自信的未来5 小时前
JSON 工具|Web Worker 工程化打包 + 语法自动修复 + 多语言代码生成实战
java·前端·json
Brookty5 小时前
【JavaEE】线程安全(一).4:写块串行保安全、CAS
java·开发语言·java-ee·多线程·线程安全
我叫黑大帅5 小时前
MySQL 并发插入竞态问题:原子写入实践指南
后端·mysql·面试
怕孤单的草丛6 小时前
缓存管理面临的主要问题
java·数据库·缓存
zhangxingchao6 小时前
AI大模型核心八:从 Agent Skill、长文档 RAG 到知识库更新与训练策略
前端·人工智能·后端