7.Nginx优化

news2024/11/16 18:24:07

文章目录

  • Nginx优化
    • Nginx隐藏版本号
    • 修改Nginx的用户和组用户
    • 配置Nginx网页缓存时间
    • 日志分割
    • 配置Nginx连接超时、连接保持
    • 修改Nginx的进程数
    • 配置Nginx网页压缩
    • 设置防盗链

Nginx优化

Nginx隐藏版本号

  • 隐藏Nginx版本号,避免安全漏洞泄漏
  • Nginx隐藏版本号的方法
    • 修改配置文件法
    • 修改源码法

在这里插入图片描述

修改配置文件法

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


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


systemctl restart nginx

##查看版本号
curl -I http://192.168.242.67

在这里插入图片描述

修改源码法

##修改源码法

cd /opt/nginx-1.24.0/src/core


vim nginx.h

#define NGINX_VERSION      "2.4.6"
#define NGINX_VER          "apache/" NGINX_VERSION


cd /opt/nginx-1.24.0/

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

make -j2
make install


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

##在http中添加配置,开启
http {
include  mime.types;
default_type application/octet-stream;
server_tokens on;         添加,开启版本号
,.....


systemctl restart nginx

在这里插入图片描述

修改Nginx的用户和组用户

编译安装时修改

cd /opt/nginx-1.24.0/


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


##修改这两项
--user=nginx 
--group=nginx 

编译时不修改,修改配置文件

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

user nginx nginx;          #取消注释,修改用户为nginx,组为nginx


systemctl restart nginx


#主进程由root创建,子进程由nginx创建
ps aux | grep nginx

在这里插入图片描述

配置Nginx网页缓存时间

  • 当Nginx将网页数据返回给客户端后,可设置缓存的时间,以方便在日后进行相同内容的请求时直接返回,避免重复请求,加快了访问速度

  • 一般针对静态网页设置,对动态网页不设置缓存时间

  • 修改配置文件,在http段、或者server段、 或者location段加入对特定内容的过期参数

  • http段:影响所有虚拟主机的站点访问

  • server段:影响某一个特定虚拟主机的站点访问

  • location段:影响某一个虚拟主机中的某一个访问请求

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

##  加入新的location,以图片作为缓存对象,支持正则表达式
location ~ \.(gif|jpg|jepg|png|bmp|ico)$ {       
          
                  root html;
                  expires 1d;        #指定缓存时间, 1天
            }


location ~ \.(html|htm|gif|jpg|jepg|png|bmp|ico)$ {       
                  root html;
                  expires 1d;                   
            }

##检查nginx是否有语法错误
nginx -t 
systemctl restart nginx

在这里插入图片描述

日志分割

  • 随着Nginx运行时间增加,日志也会增加。为了方便掌握Nginx运行状态,需要时刻关注Nginx日志文件
  • 太大的日志文件对监控是-一个大灾难
  • 定期进行日志文件的切割
  • Nginx自身不具备日志分割处理的功能,但可以通过Nginx信号控制功能的脚本实现日志的自动切割
  • 通过Linux的计划任务周期性地进行日志切割
vim /opt/fenge.sh


#!/bin/bash

#显示前一天的时间
day=$(date -d "-1 day" "+%Y%m%d")

#定义变量指定存放分割日志的目录
logs_path="/var/log/nginx"


#定义变量指定nginx的pid文件路径
pid_path="/usr/local/nginx/logs/nginx.pid"

#创建日志文件目录
[ -d $logs_path ] || mkdir -p $logs_path      

#移动并重命名日志文件
mv /usr/local/nginx/logs/access.log ${logs_path}/access.log_$day    

#重建新日志文件
kill -USR1 $(cat $pid_path)

#删除30天之前的日志文件
find $logs_path -mtime +30 -exec rm -rf {} \;        
#find $logs_path -mtime +30 | xargs rm -rf
vim /opt/fenge.sh



#!/bin/bash


#显示前一天的时间
day=$(date -d "-1 day" "+%Y%m%d")

#定义变量指定存放分割日志的目录
logs_path="/var/log/nginx"

#定义变量指定nginx的工作目录
nginx_home="/usr/local/nginx"


#定义变量指定nginx的pid文件路径
pid_path="$nginx_home/logs/nginx.pid"

#判断存放分割日志的目录是否存在,如不在创建
if [ ! -d $logs_path ]
then
	mkdir -p $logs_path  
fi


#移动并重命名日志文件
mv $nginx_home/logs/access.log ${logs_path}/access.log_$day    
mv $nginx_home/logs/error.log ${logs_path}/error.log_$day  


#重建新日志文件
kill -USR1 $(cat $pid_path)

#删除90天之前的日志文件
find $logs_path -mtime +90 --delete    

chmod +x /opt/fenge.sh

##确保计划任务服务开启
systemctl status crond

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

配置Nginx连接超时、连接保持

  • 为避免同一客户端长时间占用连接,造成资源浪费,可设置相应的连接超时参数,实现控制连接访问时间
vim /usr/local/nginx/conf/nginx.conf


http {
keepalive_timeout 60 60;  
##60 服务端主动关闭时间    60  客户端主动关闭时间

client_header_timeout 80;
##请求头超时时间

client_body_timeout 80;
##请求体超时时间
}


http {
keepalive_timeout 65 180; 
client_header_timeout 80;
client_body_timeout 80;
}


systemctl restart nginx

在这里插入图片描述

修改Nginx的进程数

  • 在高并发场景,需要启动更多的Nginx进程以保证快速响应,以处理用户的请求,避免造成阻塞
  • 更改进程数的配置方法
  • 修改配置文件,修改进程配置参数
#查看cpu核数
cat /proc/cpuinfo | grep -c "physical id"  
lscpu | grep "CPU(s):"

 #查看nginx主进程中包含几个子进程
ps aux | grep nginx      


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

#修改为核数相同或者auto
worker_processes auto;  


#在一 台4核物理服务器,进行配置,将进程进行分配
#worker_cpu_affinity 0001 0010 0100 1000; 
#设置每个进程由不同cpu处理
worker_cpu_affinity 01 10;  


systemctl restart nginx

在这里插入图片描述

在这里插入图片描述

配置Nginx网页压缩

  • Nginx的ngx_ http_ gzip_ module压缩模块提供对文件内容压缩的功能
  • 允许Nginx服务器将输出内容在发送客户端之.前进行压缩,以节约网站带宽,提升用户的访问体验,默认已经安装
  • 可在配置文件中加入相应的压缩功能参数对压缩性能进行优化
ngx_http_gzip_module   ##对文件内容压缩


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


http {

gzip on;  #取消注释,开启gzip压缩功能

gzip_min_length 1k;  #最小压缩文件大小

gzip_buffers 4 64k;  #压缩缓冲区,大小为4个64k缓冲区

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+rssimage/jpg image/jpeg image/png image/gif application/x-httpd-php application/javascript application/json;  #压缩类型,表示哪些网页文档启用压缩功能


}





http {

gzip on; 

gzip_min_length 1k;  
gzip_buffers 4 64k; 
gzip_http_version 1.1;
gzip_comp_level 6; 
gzip_vary on;

gzip_types text/plain text/javascript application/x-javascript text/css text/xml application/xml application/xml+rssimage/jpg image/jpeg image/png image/gif application/x-httpd-php application/javascript application/json; 


}

systemctl restart nginx

在这里插入图片描述

设置防盗链

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


location ~* \.(jpg|gif|swf)$ {
			##设置可信任的
            valid_referers none blocked *.ggl.com ggl.com;
            
            ##判断不在信任的值的范围中时
            if ($invalid_referer) {
	        rewrite ^/ http://www.ggl.com/error.png;
	        #return 403;
            }
        }

源主机

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


location ~* \.(jpg|gif|swf)$ {
            valid_referers none blocked *.ggl.com ggl.com;
            if ($invalid_referer) {
	        rewrite ^/ http://www.ggl.com/error.png;
	        #return 403;
            }
        }
vim /usr/local/nginx/html/test.html


<html>
    <body>
        <h2>
            盗链网站
        </h2>
        <img src="game.jpg">
    </body>
</html>

盗链主机

vim /var/www/html/index.html

<html>
    <body>
        <h2>
            盗链网站
        </h2>
        <img src="http://www.ggl.com/game.jpg">
    </body>
</html>
vim /etc/hosts

192.168.242.67 www.ggl.com
192.168.242.68 www.abc.com
yum -y install httpd

vim /etc/httpd/conf/httpd.conf

Listen 192.168.242.68:80
ServerName www.abc.com:80

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/604764.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

天气预报信息获取程序--可以使用

一、优化了&#xff0c;输入城市代码&#xff0c;获取城市信息 # codingutf-8 import requests import re import csv import datetimeclass WeatherForecast(object):def __init__(self,city_code,start_year,end_year,end_month):self.city_codecity_codeself.start_yearsta…

Linux安装rinetd实现端口转发

在Linux系统中大多数情况选择用iptables来实现端口转发&#xff0c;iptables虽然强大&#xff0c;但配置不便&#xff0c;而且新手容易出错。在此分享另一个TCP/UDP端口转发工具rinetd&#xff0c;rinetd体积小巧&#xff0c;配置也很简单。 这篇文章以CentOS 7为例&#xff0…

职场的尽头,是编制?

作者| Mr.K 编辑| Emma 来源| 技术领导力(ID&#xff1a;jishulingdaoli) 本来以为“上岸”是年轻人的专利&#xff0c;没想到这两天却从一位42岁的朋友那里&#xff0c;听到了他老人家上岸的消息。这位朋友曾在阿里任职多年&#xff0c;从去年下半年就开始和一所大学接洽&am…

Visual C++ 6.0环境开发PACS影像系统的技术指标和精准算法

一、技术指标 •图像文件格式&#xff1a;DCM、JPG、BMP、TIF等 •可支持显示属性设置&#xff1a;24/32位真彩&#xff1b;256位色&#xff08;黑白&#xff09; •可支持监视器分辨率&#xff1a;1024&#xfe61;768&#xff1b;1280&#xfe61;1024&#xff1b;1600&…

chatgpt赋能python:Python删除非数字字符

Python删除非数字字符 Python是一种流行的编程语言&#xff0c;主要用于数据科学、人工智能、Web开发和自动化等领域。在数据处理和清洗中&#xff0c;Python非常强大且易于使用&#xff0c;而Python删除非数字字符是一个非常常见的操作。在本文中&#xff0c;我们将介绍如何用…

parser.add_argument详解

接上一篇&#xff1a;写一个python文件&#xff0c;在shell脚本中运行 1.来了解下 parser.add_argument函数的参数 可以看下下面的一个参数例子 def get_args():parser argparse.ArgumentParser()parser.add_argument(-b, --batch_size, typeint, default64)parser.add_argu…

java-函数式接口和Stream流

java-函数式接口和Stream流 一、函数式接口 1.1函数式接口概述 概念 有且仅有一个抽象方法的接口 如何检测一个接口是不是函数式接口 FunctionalInterface 放在接口定义的上方&#xff1a;如果接口是函数式接口&#xff0c;编译通过&#xff1b;如果不是&#xff0c;编译失败…

K8S系列文章之基础理论篇

第一部分&#xff1a;理解控制器 简介&#xff1a;当我们尝试去理解 Kubernetes 集群工作原理的时候&#xff0c;控制器肯定是一个难点。这是因为 控制器有很多&#xff0c;具体实现大相径庭&#xff1b;且控制器的实现用到了一些较为晦涩的机制&#xff0c;不易理解。但 是&a…

2023轻松斩获5家大厂offer后的面试总结!

2023年能这么轻松地斩获5家大厂offer&#xff0c;其实这些功劳都要归功于阿里团队的这份软件测试核心知识文档&#xff0c;小编今天在此分享出来&#xff0c;也希望能帮助更多的小伙伴拿到更多高薪的offer&#xff1b; 内容涉及&#xff1a;测试理论、Linux基础、MySQL基础、W…

【小张和Oracle数据库】Java两年半练习生裁员后竟然找到了一份DBA的工作?

一、引言 大家好&#xff0c;我叫张小念&#xff08;小名念念&#xff09;&#xff0c;家里人都叫宝儿。 一个java两年半的练习生&#xff0c;经历了起起伏伏的疫情时代&#xff0c;终于在java一行也算是入了门。 但是&#xff0c;计划永远赶不上变化&#xff0c; 有一天经…

Makerbase SimpleFOC ESP32 例程3 I²C双编码器测试(AS5600)

Makerbase SimpleFOC ESP32 例程3 IC双编码器测试(AS5600) 第一部分 硬件介绍 1.1 硬件清单 序号品名数量1ESP32 FOC V1.0 主板12YT2804电机2312V电源适配器14USB 线156pin杜邦线2 注意&#xff1a;YT2804是改装的云台无刷电机,带有AS5600编码器&#xff0c;可实现360连续运…

Makerbase SimpleFOC ESP32 例程2 双电机开环位置测试

Makerbase SimpleFOC ESP32 例程2 双电机开环位置测试 第一部分 硬件介绍 1.1 硬件清单 序号品名数量1ESP32 FOC V1.0 主板12YT2804电机2312V电源适配器14USB 线1 注意&#xff1a;YT2804是改装的云台无刷电机,带有AS5600编码器&#xff0c;可实现360连续运转。 主要参数如…

区间预测 | MATLAB实现基于QRCNN-GRU-Multihead-Attention多头注意力卷积门控循环单元多变量时间序列区间预测

区间预测 | MATLAB实现基于QRCNN-GRU-Multihead-Attention多头注意力卷积门控循环单元多变量时间序列区间预测 目录 区间预测 | MATLAB实现基于QRCNN-GRU-Multihead-Attention多头注意力卷积门控循环单元多变量时间序列区间预测效果一览基本介绍模型描述程序设计参考资料 效果一…

菱形图案打印、水仙花数、买汽水

目录 菱形图案打印 上三角 下三角 拓展&#xff1a;带空格直角三角形图案 代码一 代码二 水仙花数 拓展&#xff1a;变种水仙花数 买汽水 代码一 代码二 妙用汽水瓶 菱形图案打印 题目要求 其实呢这道题很多人想到直接用printf()进行输出&#xff0c;我想说的是&#…

开源:小狐狸GPT付费AI-v2.0.0 H5和小程序端增加使用手册

小狐狸GPT付费AI体验系统、系统版本更新至1.2.0&#xff0c;源码为小程序、H5、WEB版本&#xff0c;购买含更新&#xff0c;独立版&#xff1b;开源、开源、开源、可二开&#xff01;&#xff01;200包含H5、web的vue全开源&#xff0c;最新版更新了&#xff1a;H5和小程序端增…

打造一个你自己图标exe的Python脚本启动器

目录 1. 背景需求2. 需求软件3. 准备图标4. 编译命令4.1 使用Windows API4.2 使用-mwindows参数编译4.3 使用pythonw.exe解释器 5. 测试运行5.1 参考代码5.2 使用效果 1. 背景需求 有时候为了确保多平台的兼容性&#xff0c;需要开发绿色版的应用程序&#xff0c;也就是在嵌入…

windows server 查看登录日志

windows server 查看登录日志 1、 先要开启登录审核&#xff0c;在查看登录日志 点击 “服务器管理器” – > “工具” – > “本地安全策略” 点击 “本地策略” – > “点击审核策略” 审核 成功 和 失败的记录&#xff08;可以全选也可以选择需要审计的操作&am…

Linux pthread_create源码分析

前言 本文介绍pthread_create函数的使用和源码分析。 /include/pthread.h bionic/libc/bionic/pthread_create.cpp bionic/libc/bionic/pthread_attr.cpp pthread_create使用 Android中的绝大部分线程&#xff0c;最后都是通过pthread_create创建的。 int pthread_create(p…

【LeetCode热题100】打卡第11天:有效括号合并两个有序链表

文章目录 【LeetCode热题100】打开第11天⛅前言&#x1f512;有效括号&#x1f511;题解&#x1f512;合并两个有序链表&#x1f511;题解&#x1f4a1;思路一&#xff1a;合并到第三方链表上&#x1f510;【非递归实现】&#x1f510;【递归实现】 &#x1f4a1;思路二 &#…

2023年上半年数据库系统工程师下午真题及答案解析

试题一(15分) 某新能源汽车公司为了提升效率&#xff0c;需开发一个汽车零件采购系统。请完成系统的数据库设计。 概念结构设计 需求描述 (1)记录供应商信息&#xff0c;包括供应商的名称、地址和一个电话。 (2)记录零件信息&#xff0c;包括零件的编码、名称和价格。 (3)…