【Nginx】Nginx的优化和防盗链

这篇具有很好参考价值的文章主要介绍了【Nginx】Nginx的优化和防盗链。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

nginx版本迭代比较快

*工作中,在发版期,通常先备份文件并备注时间,方便后期故障后回档

例:
cp nginx.conf nginx.conf.bak.2023.0805

隐藏版本号的两种方法***

1.修改配置文件

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

        在http模块中,加入一个人命令:

server_tokens off
2.在源码包里改
/opt/nginx-1.22.0/src/core/nginx.h

define NGINX_VERSION "1.1.1"		#修改版本号
define NGINX_VER	"burim/" NGINX_VERSION
配置好之后,需要重新编译安装

nginx的日志分割:

nginx不自带日志分割工具,需要手动以脚本的形式来进行分割

#!/bin/bash
#获取日期
d=$(date +%Y-%m-%d)
#定义存储目录
dir="/usr/local/nginx/logs"

#分割日志
logs_file="/usr/local/nginx/logs/access.log"
logs_error='/usr/local/nginx/logs/error.log'

#定义nginx的pid文件
pid_file='/usr/local/nginx/run/nginx.pid'

if [ ! -d "$dir" ]
then
   mkdir -p $dir
fi

#移动日志并且重命名

mv $logs_file ${dir}/access_${d}.log
# mv /usr/local/nginx/logs/access.log /usr/local/nginx/logs/access_2023-08-05.log
mv $logs_error ${dir}/error_${d}.log

#发送信号给nginx主程序,让他生成一个新的日志文件

kill -USR1 $(cat ${pid_file})
#cat /usr/local/nginx/run/nginx.pid

#日志文件清理的命令
find ${dir} -mtime +30 -exec rm -rf {} \;

nginx的页面压缩

作用:节约带宽,提升用户的访问速度

gzip on;

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

gzip_min_length 1K;
#如果这个文件小于1k,就不再进行压缩
gzip_buffers 4 64k;
#压缩的缓冲区,大小为64k,有4个,nginx会使用4个64k大小的缓冲区,存储压缩后的数据
gzip_http_version 1.1;
#压缩的版本号,可以不写;默认为1.1
gzip_comp_level 6;
#压缩比率 1-9 数字
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;
#压缩的类型,开启对这些类型的文档的压缩功能

压缩功能是默认自带的可以不取消注释的

但是需要添加压缩细节,需要把gzip打开后,进行配置

图片缓存

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

【Nginx】Nginx的优化和防盗链,nginx,服务器,前端

连接超时

http1.1会有一个keepalive模式,告诉web服务器在处理完一个请求之后保持当前连接的tcp的状态为打开状态,如果当前连接有新的请求,服务端就会利用这个没有关闭的连接,继续给客户端响应,不需要再建立一个新的连接

keepalive在一段时间内,保持打开状态,在这段时间内还是会占用资源,占用过多还是会影响性能的

配置文件中

keepalive_timeout 65; tcp连接最多可以保持65秒

如果设置为0,表示禁用了keepalive的功能;只要请求完成,立刻关闭tcp连接

长连接;

client_header_timeout 80 请求头的超时时间

客户端向服务端发送请求,会有一个requst_header的超时时间;如果客户端没有在60秒内发送一个完整的请求头,nginx会返回408 request timeout(请求超时)

client_body_timeout 60 请求体的超时时间

客户端没有向服务器在60秒发送一个完整请求体,nginx 408 request timeout

ping 超时 表示服务端没有响应/ ip无法上网

nginx的并发设置

在高并发的场景中,需要启动更多的nginx进程以保证响应速度;可以更快的处理用户的请求,避免阻塞

1.根据cpu的核心数来进行设置

cat /proc/cpuinfo | grep processor | wc -l    #查看cpu的核心数

2.

worker_cpu_affinity 
#设置worker进程绑定到指定的cpu的命令,可以减少cpu切换带来的开销,确保worker进程在一个独立的cpu核心上运行

生产中worker一般设置为4,如果访问量不大,1也足够了

如果要扩展:最多到8个

8个以上的worker进程就不会再提高性能了,反而会降低性能

worker_cpu_affinity        #绑定worker进程到cpu;单个worker进程可以不绑定cpu

TIME_WAIT

不是报错信息,是tcp连接状态中的一种状态;会出现在tcp连接的四次挥手过程中

四次挥手过程中,当连接的一方发送FIN报文,而且收到了对方的ack报文后,就会进入TIME_WAIT

tcp处理等待的状态,是一个持续时间,65秒,确保网络中的所有数据包都被完全处理完毕

有两个作用:

1.确保可靠的关闭连接,如果立刻关闭连接,旧的数据包也会被处理,从而干扰新的连接

2.避免连接复用,time_wait的时间太短可能会导致旧的连接仍然在网络中,误认为是新连接,导致连接复用

而且在连接的生命周期中,time_wait占用的资源是非常小的,而且对服务器整体性能的影响也很有限

大量的短连接,频繁创建和销毁,或者大并发连接时(在负载均衡的条件下),time_wait连接会积累,服务器会出现大量time_wait状态的连接,这种情况下需要优化处理

nignx本身不能进行优化,要靠内核来进行优化

查看系统的所有tcp连接的状态***
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
closed    表示连接未活动或者关闭
listen    监听,等待连接
SYN_recv        syn接收,表示服务端收到了客户端的syn连接请求,正在等待连接
SYN_sent        syn发送,客户端已经向服务器发送了syn请求,等待服务器确认
ESTABLISHED    表示已将建立了tcp连接,正在传送数据
FIN_wait_1    表示一端已将发送了连接关闭的请求,等待另一端确认
FIN_wait_2    表示另一端已经确认了,等待发出端确认关闭请求
close_wait   表示一端已经关闭连接,但是应用程序还未关闭连接
closing	     表示正在关闭连接
time_wait    连接等待
last_ack     表示应用程序已经发送了最后确认,等待另一端进入closed状态

提问:如果有大量timeout积累怎么办

答:修改内核

vim /etc/sysctl.conf

net.ipv4.tcp_syncookies = 1
    #表示开启syn的cookies(缓存),当出现SYN队列溢出,启用cookie处理请求
net.ipv4.tcp_tw_reuse = 1 
    #让TIME_WAIT状态的连接可以复用,即使time_wait把本地端口全部占满,也不会拒绝新的请求
net.ipv4.tcp_tw_recycle = 1
    #让TIME_WAIT尽快回收
net.ipv4.tcp_fin_timeout = 60
    #表示如果端口有本端要求关闭,FIN_WAIT_2状态的保持时间

防盗链

vim /usr/local/nginx/conf/nginx.conf
http {
...........
server{
...........
location ~* \.(jpg|gif|swf)$ {

...
}
}
}


~* \.(jpg|gif|swf)$     这段正则表达式表示匹配不区分大小写,以.jpg 或.gif 或.swf 结尾的文件;
valid_referers    设置信任的网站;*.kgc.com kgc.com都可以访问图片
none              允许没有http_refer的请求访问资源
www.kgc.com/ls.jpg
www.kgc.com        也可以访问显示图片;www.kgc.com	可以直接访问www.kgc.com/ls.jpg

blocked        允许不是http://开头的请求,可以不带协议的请求访问资源
*.kgc.com      只允许域名是kgc的才可以登录

只要不是信任的,就重写

【Nginx】Nginx的优化和防盗链,nginx,服务器,前端文章来源地址https://www.toymoban.com/news/detail-641516.html

到了这里,关于【Nginx】Nginx的优化和防盗链的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 服务器上一个域名对应多个前端项目的nginx转发配置

    场景: 当有两个前端项目A,B的时候,项目A(对应端口8000)和项目B(对应端口8001)分别部署在服务器的不同位置,通过服务器ip+端口都能正常访问单独的项目A和项目B;现在要求两个项目共用一个域名~~也就是说访问http://10.111.182.xxx:8000的时候默认访问项目A的资源,访问htt

    2024年02月05日
    浏览(39)
  • Nginx代理服务器、HTTP调度、TCP/UDP调度、Nginx优化、HTTP错误代码、状态页面、压力测试

    Top 案例1:Nginx反向代理 案例2:Nginx的TCP/UDP调度器 案例3:Nginx常见问题处理 1.1 问题 使用Nginx实现Web反向代理功能,实现如下功能: 后端Web服务器两台,可以使用httpd实现 Nginx采用轮询的方式调用后端Web服务器 两台Web服务器的权重要求设置为不同的值 最大失败次数为2,失败

    2024年01月21日
    浏览(33)
  • 定位前端POST请求报500的问题(从接口到nginx到服务器)

    背景是很早之前的项目,前端突然反馈某个POST接口保存特定的内容会报500,没有返回内容,记录一下定位问题的过程。 1.结合请求数据来看长度大概为15000+,首先想到是数据库字段长度问题。 查询后发现比较长的字段定义的是text类型, 最大长度为65,535(2的16次方–1)字符,排

    2024年04月08日
    浏览(36)
  • Vite4 + Vue3 项目打包并发布Nginx服务器 (前端必看)

    这里因为我们有的小伙伴可能不太需要服务器,单纯学习的话也没有必要去买一个服务器。如果需要把自己的东西部署到公网上,有很多方式,自行百度。你也可以购买阿里云或者腾讯云。逻辑都是一样的,我这里使用的虚拟机+centos系统,我已经提前在自己的机器安装好了。

    2024年02月05日
    浏览(73)
  • 分布式 - 服务器Nginx:基础系列之Nginx静态资源配置优化sendfile | tcp_nopush | tcp_nodelay

    1. sendfile 指令 请求静态资源的过程:客户端通过网络接口向服务端发送请求,操作系统将这些客户端的请求传递给服务器端应用程序,服务器端应用程序会处理这些请求,请求处理完成以后,操作系统还需要将处理得到的结果通过网络适配器传递回去。 sendfile 指令是用于将

    2024年02月09日
    浏览(30)
  • 用Nginx将前端Vue项目部署到云服务器(含代理实现请求跨域)

    记录使用Nginx将 纯前端 的Vue3项目部署到阿里云服务器(Ubuntu 22.04)上,包含通过Nginx代理实现 跨域请求 、以及个人踩坑记录~ 执行下列命令安装: 安装完成后查看nignx版本,显示版本信息则说明安装成果 启动nginx,如正确启动,则不会出现任何提示信息。 nginx启动成功后打

    2024年04月12日
    浏览(36)
  • Nginx:Nginx优化与防盗链

    方法一:修改配置文件方式 方法二:修改源码文件,重新编译安装 当Nginx将网页数据返回给客户端后,可设置缓存的时间,以方便在日后进行相同内容的请求时直接返回,避免重复请求,加快了访问速度 一般针对静态网页设置,对动态网页不设置缓存时间 HTTP有一个KeepAliv

    2024年02月08日
    浏览(29)
  • 手把手教小白如何在Window系统下搭建Nginx服务器环境并部署前端项目

    这里日后补充… 在nginx官网http://nginx.org/en/download.html 下载稳定版至自己想要的目录下。 然后解压文件(没有exe的安装过程),下在解压后进入其目录如下: (注意:安装目录最好不要有中文,否则启动时容易报错) 启动方式有两种: (1)直接进入nginx安装目录下,双击n

    2024年02月16日
    浏览(40)
  • Mac Docker安装配置nginx,配置代理前端访问服务器后端访问本地启动项目

     或者直接通过docker客户端查看 --name NginxTest:容器名称 -p 8080:8080:映射端口 -d nginx:设置容器后台运行  docker客户端查看 1)全局块:配置服务器整体运行的配置指令 nginx 服务器整体运行的配置指令,主要包括配置运行 Nginx 服务器的用户(组)、允许生成的 worker process 数,

    2024年02月02日
    浏览(52)
  • 记:vite3+vue3+axios前端项目跨域问题解决【前端和服务器nginx配置】

    前言:什么是跨域,网上一搜一大把,所以这里直接跳过,直入主题。 处理方式:不通过后端处理跨域,通过前端+服务器nginx处理。 1.前端涉及处理跨域的必要配置(开发环境、生产环境):vite3、vue3、axios 2.服务器涉及处理跨域的配置(生产环境):nginx【主要用到其配置

    2024年02月01日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包