【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
相关推荐
weixin_387002151 小时前
漏洞修复学习之CVE-2024-10976漏洞复现
数据库·sql·学习·安全·postgresql
Lisonseekpan2 小时前
为什么国内禁用docker呢?
运维·docker·容器
扣脚大汉在网络2 小时前
如何在centos 中运行arm64程序
linux·运维·centos
德迅云安全杨德俊3 小时前
服务器为何成为网络攻击的“重灾区“?
网络·安全·web安全·ddos
R-G-B4 小时前
【P1】win10安装 Docker教程
运维·docker·容器
爱莉希雅&&&4 小时前
DNS分离解析案例
运维·网络·dns
jzhwolp5 小时前
从nginx角度看数据读写,阻塞和非阻塞
c语言·nginx·性能优化
Y淑滢潇潇5 小时前
RHCE Day2 时间管理服务器 NFS服务器
linux·运维·服务器
半熟的皮皮虾5 小时前
因需写了个内网运维专用的IP地址管理工具,有点不同
运维·服务器·tcp/ip