• Nginx 优化


    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档



    一、隐藏版本号

    可以通过隐藏Nginx版本号,提高安全性

    (一)、查看方法

    1.2、本地查看(查看头部信息)

    curl -I http://192.168.32.10

    在这里插入图片描述

    1.3、浏览器查看

    可以直接在浏览器(例如浏览器 开发者工具 network 刷新 选择请求 选择headlers 查看版本)
    在这里插入图片描述

    (二)、Nginx隐藏版本号的方式

    2.2、修改配置文件

    vim /usr/local/nginx/conf/nginx.conf
    
    • 1

    在这里插入图片描述

    在这里插入图片描述

    2.3、修改源码

    vim /opt/nginx-1.15.9/src/core/nginx.h
    
    
    • 1
    • 2

    修改版本号
    修改服务器类型

    在这里插入图片描述

    重新编译安装一下

    cd /opt/nginx-1.15.9/
    ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --add-module=/usr/local/nginx-module-vts-master/
    
    
    
    make  && make install
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    make
    在这里插入图片描述
    在这里插入图片描述

    vim /usr/local/nginx/conf/nginx.conf
    
    • 1

    打开版本号
    在这里插入图片描述
    重新访问192.168.116.10
    在这里插入图片描述
    在这里插入图片描述

    二、修改用户和组(控制权限)

    若没有安装前创建用户,则在此服务中默认使用的是nobody

    vim /usr/local/nginx/conf/nginx.conf
    user nginx nginx; 			#取消注释,修改用户为 nginx ,组为 nginx
    
    systemctl restart nginx
    
    ps aux | grep nginx
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    在这里插入图片描述

    在这里插入图片描述

    修改前:
    在这里插入图片描述
    修改后;
    在这里插入图片描述

    三、设置缓存时间(图片)——网页缓存

    vim /usr/local/nginx/conf/nginx.conf
    http {
    ......
    	server {
    	...... 
    		location ~ \.(gif|jpg|jepg|png)$ { 	#加入新的 location,以图片作为缓存对象
    			root html;
    			expires 1d;				#指定缓存时间,1
    		}
    ......
    	}
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述

    注意图片要放在/usr/local/nginx/html目录下
    
    • 1

    在这里插入图片描述

    1、两种方式访问:

    1、1 访问192.68.116.10/yang.jpg

    在这里插入图片描述

    1、2 访问192.168.116.10

    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

    四、日志分割

    #vim /opt/fenge.sh
    
    • 1
    #!/bin/bash
    # Filename:fenge.sh
    d=$(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}/test.com-access.log-$d
    kill -HUP $(cat $pid_path)
    find $logs_path -mtime +30 | xargs rm -rf
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    在这里插入图片描述
    在这里插入图片描述

    设置定时任务
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    crontab -e
    
    0 1 * * * /opt/jiaoben/rizhi.sh   #设置周期性计划
    
    atime (access  time)   #最后一次访问文件或目录的时间
    mtime (modify time)  #最后一次修改文件或目录(内容)的时间
    ctime  (change  time)  #最后一次改变文件或目录(属性)的时间
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    在这里插入图片描述

    五、连接超时(偏于客户端)

    keepalive_timeout(tcp连接三次握手的超时时间)
    指定keepalive的超时时间(timeout),指定每个TCP连接最多可保持多长时间,服务器将会在这个时间后关闭连接,nginx的默认值是65秒,有些浏览器最多只保持60秒,所以可设定为60秒,若将它设置为0,就禁止了keepalive连接。
    第二个参数(可选的)指定了再相应头keep-alive:timeout=time中的time值。这个头能让一些浏览器主动关闭连接,这样服务器就不必去关闭连接了。没有这个参数,nginx不会发送keep-alive相应头。
    
    client_header_timeout(客户端请求头的超时时间)
    客户端向服务器发送一个完整的request header(请求头)的超时时间,如果客户端再指定时间内没有发送一个完整的request header,nginx返回httpd408的返回码(request timed out:请求超时)
    
    clent_body_timeout(客户端请求体的超时时间)
    指定客户端与服务器建立连接后发送request body的超时时间,如果客户端在指定时间内没有发送任何内容,nginx返回HTTPD408(request timed out)
    
    
    
    HTTP有一个KeepAlive模式,它告诉web服务器在处理完一个请求后保持这个TCP连接的打开状态。若接收到来自客户端的其它请求,服务端会利用这个未被关闭的连接,而不需要再建立一个连接。
    ​KeepAlive 在一段时间内保持打开状态,它们会在这段时间内占用资源。占用过多就会影响性能
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    vim /usr/local/nginx/conf/nginx.conf
    
    
    http {
    ...... 
        keepalive_timeout 65 180;   #指定每个tcp连接超时时间65
        client_header_timeout 80;   #请求头的超时时间为80
        client_body_timeout 80;      #请求体的超时时间为80
    ...... 
    }
    
    systemctl restart nginx 重启nginx
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    在这里插入图片描述

    在这里插入图片描述

    六、更改进程数(场景)

    
    cat /proc/cpuinfo | grep -c “physical id” #查看cpu核数
    ps aux | grep nginx #查看nginx主进程中包含几个子进程
    
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    vim /usr/local/nginx/conf/nginx.conf
    
    worker_processes 2; #修改为核数相同或者2
    
    worker_cpu_affinity 01 10; #设置每个进程由不同cpu处理,进程数配2 4 6 8分别为0001 0010 0100 1000
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在这里插入图片描述

    在这里插入图片描述

    七、配置网页压缩

    vim /usr/local/nginx/conf/nginx.conf
    http {
    
    gzip on; #取消注释,开启gzip压缩功能
    gzip_min_length 1k; #最小压缩文件大小
    gzip_buffers 4 64k; #压缩缓冲区,大小为464k缓冲区
    gzip_http_version 1.1; #压缩版本(默认1.1,前端如果是squid2.5请使用1.0
    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; #压缩类型,表示哪些网页文档启用压缩功能
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    在这里插入图片描述

    cd /usr/local/nginx/html
    先将1.jpg文件传到/usr/local/nginx/html目录下
    vim index.html
    systemctl restart nginx
    在访问的时候一定要记得清楚缓存(历史记录)
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述

    在这里插入图片描述

    八、盗链与防盗链

    盗链端 192.168.116.20 nginx
    服务端 192.168.116.10 nginx
    win10 192.168.32.9 配置
    win10的hosts配置路径:C:\WINDOWS\System32\drivers\etc
    首次修改需要修改权限
    属性——》安全——》高级——》更改为所有权限

    网页准备:

    服务端(192.168.32.10)
    cd /usr/local/nginx/html
    将dog.jpg、knmn.png文件传到/usr/local/nginx/html目录下

    vim index.html
    ...... 
    <img src="dog.jpg"/>
    </body>
    </html>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述

    盗链端

    vim /etc/hosts
    echo "192.168.32.20 www.daol.com" >> /etc/hosts 
    
    cd /usr/local/nginx/html
    vim index.html
    ...... 
    <img src="http://www.liuxu.com/dog.png"/>
    </body>
    </html>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    在这里插入图片描述

    vim /etc/hosts
    192.168.32.10 www.liuxu.com
    192.168.32.20 www.daol.com
    
    
    • 1
    • 2
    • 3
    • 4

    服务端(防盗链端)

    vim /usr/local/nginx/conf/nginx.conf
    http {
    ......
    	server {
    	......
    		location ~*\.(png|jpg|gif|swf)$ {
    			valid_referers *.fangdaolian.com fangdaolian.com;
    			if ( $invalid_referer ) {
    				rewrite ^/ http://www.fabngdaolian.com/error.png,jpg;
    				#return 403;
                }
            }
    	......
    	}
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    上传防盗链图到/usr/local/nginx/html中

    在这里插入图片描述

    九、FPM模块参数优化

    cd /usr/local/php/etc/
    cp php-fpm.conf.default php-fpm.conf
    vim php-fpm.conf
    pid = run/php-fpm.pid
     
    vim /usr/local/php/etc/php-fpm.d/www.conf
    #96
    pm = dynamic		#fpm进程启动方式,动态的
    #107
    pm.max_children=20  #fpm进程启动的最大进程数
    #112
    pm.start_servers = 5  #动态方式下启动时默认开启的进程数,在最小和最大之间
    #117
    pm.min_spare_servers = 2  #动态方式下最小空闲进程数
    #122
    pm.max_spare_servers = 8  #动态方式下最大空闲进程数
     
    #启动php-fpm,不可用于重启
    /usr/local/php/sbin/php-fpm  -c /usr/local/php/lib/php.ini
    #执行第一个命令后,就可以使用下面这条命令查看pid号重启php-fpm
    
    netstat -anpt | grep 9000
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    9.2FPM模块参数优化出现的一种报错

    下面是一种报错:
    ERROR: unable to bind listening socket for address '127.0.0.1:9000': Address already in use (98)
    ERROR: FPM initialization failed
    
    说白了就是:9000端口被占用 
    1、查看是否php-fpm 处于开启状态,服务器并未杀死php-fpm的进程。
    netstat -natp | grep 9000
    
    2、停止原来php-fpm的进程,重启开启
    killall php-fpm 
    /usr/local/php/sbin/php-fpm -c /usr/local/php/lib/php.ini
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述


  • 相关阅读:
    你从浏览器输入一个URL到返回HTML界面给你这个流程发生了什么?【一文搞定吃透】
    【事务】- mysql事务和neo4j事务冲突导致mysql事务不生效
    “比特”与“瓦特”深度融合,云计算驶向绿色低碳快车道
    【C++】哈希对unordered_map和unodered_set的封装
    分享three.js实现乐高小汽车
    【网关路由测试】——网关状态转换测试
    面试不面试,你都必须得掌握的vue知识
    万宾科技智能井盖传感器特点介绍
    【LeetCode】升级打怪之路 Day 13:优先级队列的应用
    JVM类加载机制详解
  • 原文地址:https://blog.csdn.net/zhou641694375/article/details/126757165