【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
相关推荐
Trouvaille ~15 小时前
【Linux】UDP Socket编程实战(一):Echo Server从零到一
linux·运维·服务器·网络·c++·websocket·udp
嵌入小生00715 小时前
Shell | 命令、编程及Linux操作系统的基本概念
linux·运维·服务器
-Try hard-17 小时前
Linuv软件编程 | Shell命令
linux·运维·服务器
释怀不想释怀17 小时前
Linux快捷键,软件安装启动
linux·运维·服务器
zhengfei61117 小时前
自动化快速评估工具
运维·自动化
Hello World . .17 小时前
Linux:软件编程
linux·运维·服务器·vim
程序员哈基耄17 小时前
纯客户端隐私工具集:在浏览器中守护你的数字安全
安全
老师用之于民18 小时前
【DAY21】Linux软件编程基础&Shell 命令、脚本及系统管理实操
linux·运维·chrome·经验分享·笔记·ubuntu
路由侠内网穿透.18 小时前
本地部署代码托管解决方案 Gitea 并实现外部访问( Windows 版本)
运维·服务器·网络协议·gitea
darkb1rd19 小时前
五、PHP类型转换与类型安全
android·安全·php