【Nginx优化】性能调优与安全配置

nginx优化

隐藏版本号

功能:

  • 隐藏 Nginx 版本号是重要的安全措施,可以防止攻击者利用特定版本的已知漏洞

    方法一

    1. 修改nginx.conf配置文件

    vim /usr/local/nginx/conf/nginx.conf

    http {
    include mime.types;
    default_type application/octet-stream;
    #添加,关闭版本号
    server_tokens off;
    ......
    }

    2. 重启nginx

    nginx -t
    systemctl restart nginx

    复制代码

    3. 测试访问网址

    curl -I http://192.168.65.131

    复制代码

    方法二

    1. 编辑nginx.h文件

    vim /opt/nginx-1.12.0/src/core/nginx.h

    #修改版本号
    #define NGINX_VERSION "1.1.1"
    #修改服务器类型
    #define NGINX_VER "IIS" NGINX_VERSION

    复制代码

    2. 源码编译安装

    cd /opt/nginx-1.12.0/

    ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module

    make && make install

    复制代码

    3. 编辑nginx.conf文件

    vim /usr/local/nginx/conf/nginx.conf

    http {
    include mime.types;
    default_type application/octet-stream;
    # 打开版本号
    server_tokens on;
    ......
    }

    复制代码

    4. 重启nginx

    systemctl restart nginx

    复制代码

    5. 测试访问网址

    curl -I http://192.168.10.22

    复制代码
    #### 修改用户与组
    
    功能:
    
    - **提高安全性** - 限制潜在漏洞的影响范围
    - **遵循最小权限原则** - 只授予必要的权限
    - **隔离服务** - 防止服务间相互影响
    - **便于审计** - 明确文件所有权和访问控制

    1. 编辑nginx.conf文件

    vim /usr/local/nginx/conf/nginx.conf

    修改用户为nginx,组为nginx

    user nginx nginx;

    复制代码

    2. 重启nginx

    systemctl restart nginx

    复制代码

    3. 查看包含有nginx的进程

    ps aux | grep nginx

    复制代码
    #### 缓存时间
    
    功能:
    
    - **大幅提升性能** - 减少重复请求和服务器负载
    - **改善用户体验** - 加快页面加载速度
    - **节省带宽** - 减少不必要的数据传输

    1. 编辑nginx.conf文件

    vim /usr/local/nginx/conf/nginx.conf

    http {
    ......
    server {
    ......
    location / {
    root html;
    index index.html index.htm;
    }

    复制代码
      	#加入新的 location,以图片作为缓存对象
      	location ~ \.(gif|jpg|jepg|png|bmp|ico)$ { 		
      		root html;
      		#指定缓存时间,1天
      		expires 1d;							
      	}

    ......
    }
    }

    复制代码

    2. 重启nginx

    systemctl restart nginx

    复制代码

    3. 测试访问网站

    http://www.cat.com/pic.jpg

    复制代码
    #### 日志切割
    
    功能:
    
    - **防止日志文件过大**,方便管理和分析

    1. 编写fenge脚本

    vim /opt/fenge.sh

    #!/bin/bash

    Filename: fenge.sh

    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 {} ; #删除30天之前的日志文件
    #find $logs_path -mtime +30 | xargs rm -rf

    复制代码

    2. 执行脚本

    chmod +x /opt/fenge.sh
    /opt/fenge.sh

    复制代码

    3. 查看日志

    ls /var/log/nginx
    ls /usr/local/nginx/logs/access.log

    复制代码

    4. 周期执行

    crontab -e
    0 1 * * * /opt/fenge.sh

    复制代码
    #### 连接超时
    
    功能:
    
    - **释放闲置连接、提高服务器资源利用率、防止资源耗尽**

    1. 编辑nginx.conf配置文件

    vim /usr/local/nginx/conf/nginx.conf

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

    复制代码

    2. 重启nginx

    systemctl restart nginx

    复制代码
    #### 更改进程数
    
    功能:
    
    - 可以充分利用多核 CPU 资源,**提高并发处理能力**

    1. 查看cpu核数

    cat /proc/cpuinfo | grep -c "physical id"

    复制代码

    2. 查看含有nginx进程

    ps aux | grep nginx

    复制代码

    3. 编辑nginx.cong文件

    vim /usr/local/nginx/conf/nginx.conf

    修改为核数相同或者2倍

    worker_processes 2;
    #设置每个进程由不同cpu处理,进程数配为4时0001 0010 0100 1000
    worker_cpu_affinity 01 10 ;

    复制代码

    4. 重启nginx

    systemctl restart nginx

    复制代码
    #### 配置网页压缩
    
    功能:
    
    - 可以显著**减少传输数据量,提高页面加载速度,节省带宽**

    1. 编辑nginx.conf文件

    vim /usr/local/nginx/conf/nginx.conf

    http {
    ......
    # 开启gzip压缩功能
    gzip on;
    # 最小压缩文件大小
    gzip_min_length 1k;
    # 压缩缓冲区,大小为4个64k缓冲区
    gzip_buffers 4 64k;
    # 压缩版本(默认1.1,前端如果是squid2.5请使用1.0)
    gzip_http_version 1.1;
    # 压缩比率
    # 1:压缩比最小,速度最快;9:压缩比最大,传输速度最快,但处理也最慢,也比较的消耗CPU资源
    gzip_comp_level 6;
    # 支持前端缓存服务器存储压缩页面
    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;
    ......
    }

    复制代码

    2. 进入/usr/local/nginx/html目录下,对index.html文件进行编辑

    cd /usr/local/nginx/html

    vim index.html

    ......

    网页中插入图片

    </body> </html> ```
    复制代码
    # 3. 重启nginx
    systemctl restart nginx

    配置防盗链

    功能:

    • 防盗链是保护网站资源不被其他网站直接引用的重要手段,可以节省带宽、提高安全性
    复制代码
    # 1. 编辑nginx.conf文件
    vim /usr/local/nginx/conf/nginx.conf
    
    http {
    ......
    	server {
    	......
    		location ~* \.(jpg|gif|swf)$ {	
    			# 匹配
    			valid_referers none blocked *.benet.com benet.com; 
    			if ( $invalid_referer ) {
    				# rewrite 跳转
    				rewrite ^/ http://www.cat.com/error.png;
                }
            } 
    	......
    	}
    }
    复制代码
    # 2. Web源主机(192.168.65.133)配置
    
    # 将game.jpg、error.png文件传到/usr/local/nginx/html目录下
    cd /usr/local/nginx/html
    
    # 编辑index.html文件
    vim index.html
    
    <body>
    <html>
    <img src="pic.jpg"/>
    </body>
    </html>
    复制代码
    # 3. 添加本地 DNS 解析记录
    echo "192.168.65.133 www.cat.com" >> /etc/hosts 
    echo "192.168.65.128 www.dog.com" >> /etc/hosts 
    复制代码
    # 4. 配置盗链网站主机(192.168.65.128):
    cd /usr/local/nginx/html
    
    vim index.html
    
    <html>
    <body>
    <img src="http://www.cat.com/pic.jpg"/>
    </body>
    </html>
    复制代码
    # 5. 添加本地 DNS 解析记录
    echo "192.168.65.133 www.cat.com" >> /etc/hosts 
    echo "192.168.65.128 www.dog.com" >> /etc/hosts 
    复制代码
    # 6. 进入虚拟机浏览器进行访问
    http://www.cat.com
相关推荐
用户962377954485 小时前
DVWA 靶场实验报告 (High Level)
安全
数据智能老司机9 小时前
用于进攻性网络安全的智能体 AI——在 n8n 中构建你的第一个 AI 工作流
人工智能·安全·agent
数据智能老司机9 小时前
用于进攻性网络安全的智能体 AI——智能体 AI 入门
人工智能·安全·agent
用户9623779544810 小时前
DVWA 靶场实验报告 (Medium Level)
安全
red1giant_star10 小时前
S2-067 漏洞复现:Struts2 S2-067 文件上传路径穿越漏洞
安全
用户9623779544814 小时前
DVWA Weak Session IDs High 的 Cookie dvwaSession 为什么刷新不出来?
安全
闲云一鹤1 天前
nginx 快速入门教程 - 写给前端的你
前端·nginx·前端工程化
碳基沙盒2 天前
OpenClaw 多 Agent 配置实战指南
运维
cipher2 天前
ERC-4626 通胀攻击:DeFi 金库的"捐款陷阱"
前端·后端·安全
蝎子莱莱爱打怪4 天前
Centos7中一键安装K8s集群以及Rancher安装记录
运维·后端·kubernetes