Nginx的优化与防盗链,无名宵小速速退让!

2024-02-13 11:59

本文主要是介绍Nginx的优化与防盗链,无名宵小速速退让!,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

  • 1. Nginx隐藏版本号
    • 1.1 修改配置文件
    • 1.2 修改源码
  • 2. 修改用户和组
  • 3. 设置缓存时间
  • 4. 日志分割
  • 5. 实现连接超时
  • 6. 更改进程数
  • 7. 网页压缩
  • 8. 盗链与防盗链
    • 8.1 盗链
    • 8.2 防盗链
  • 9. FPM模块参数优化

1. Nginx隐藏版本号

1.1 修改配置文件

[root@client ~]# curl 192.168.152.129
[root@client ~]# curl -I http://192.168.152.129
HTTP/1.1 200 OK
Server: nginx/1.15.9
Date: Thu, 24 Jun 2021 01:51:55 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Tue, 22 Jun 2021 16:39:04 GMT
Connection: keep-alive
ETag: "60d21228-264"
Accept-Ranges: bytes
[root@client ~]# vim /usr/local/nginx/conf/nginx.confhttp {include       mime.types;default_type  application/octet-stream;server_tokens off;#关闭版本号[root@client ~]# systemctl restart nginx
[root@client ~]# curl -I http://192.168.152.129
HTTP/1.1 200 OK
Server: nginx
#这里可以看到是隐藏了版本号,看不到准确的数字
Date: Thu, 24 Jun 2021 03:30:00 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Tue, 22 Jun 2021 16:39:04 GMT
Connection: keep-alive
ETag: "60d21228-264"
Accept-Ranges: bytes

1.2 修改源码

[root@client ~]# vim /opt/nginx-1.15.9/src/core/nginx.h#define nginx_version      1015009
#define NGINX_VERSION      "1.15.9"
#define NGINX_VER          "nginx/" NGINX_VERSION将上面的原有内容稍加更改,即可
#define nginx_version      1015009
#define NGINX_VERSION      "1.0.0"
#define NGINX_VER          "apache/" NGINX_VERSION进行重新编译
[root@client ~]# cd /opt/nginx-1.15.9/
[root@client nginx-1.15.9]# ./configure \
> --prefix=/usr/local/nginx \
> --user=nginx \
> --group=nginx \
> --with-http_stub_status_module[root@client nginx-1.15.9]# make && make install
[root@client nginx-1.15.9]# vim /usr/local/nginx/conf/nginx.confhttp {include       mime.types;default_type  application/octet-stream;server_tokens on;#打开版本号[root@client nginx-1.15.9]# systemctl restart nginx
[root@client nginx-1.15.9]# curl -I http://192.168.152.129
HTTP/1.1 200 OK
Server: apache/1.0.0
#这里就可以很明确的看到版本号的名称+版本数字
#不是之前的nginx
Date: Thu, 24 Jun 2021 03:40:47 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Tue, 22 Jun 2021 16:39:04 GMT
Connection: keep-alive
ETag: "60d21228-264"
Accept-Ranges: bytes

2. 修改用户和组

Nginx运行时进程需要有用户与组的支持,以实现对网站文件读取时进行访问控制

[root@client nginx-1.15.9]# vim /usr/local/nginx/conf/nginx.conf#user  nobody;
worker_processes  1;
#默认是Nginx默认使用nobody用户账号与组账号
#修改成如下内容user  nginx nginx;
worker_processes  1;
#修改属组属主,重启服务,查看服务状态
[root@client nginx-1.15.9]# systemctl restart nginx
[root@client nginx-1.15.9]# ps aux | grep nginx
root     109662  0.0  0.0  20560   624 ?        Ss   12:10   0:00 nginx: master process /usr/local/nginx/sbin/nginx
nginx    109663  0.0  0.0  23096  1392 ?        S    12:10   0:00 nginx: worker process
root     109667  0.0  0.0 112724   988 pts/4    S+   12:10   0:00 grep --color=auto nginx

3. 设置缓存时间

[root@client nginx-1.15.9]# vim /usr/local/nginx/conf/nginx.conf45         location / {46             root   html;47             index  index.html index.htm;48         }49         50         location ~ \.(gif|jpg|jepg|bmp|ico)$ {#添加图片识别     51          root   html;      52          expires 1d; #设置缓存时间为1天      53      }  [root@client nginx-1.15.9]# cd /usr/local/nginx/html
[root@client html]# vim index.html 14 <h1>Welcome to nginx!</h1>
15 <img src="1.jpg"</h1>#事先要记得将图片先导入目录下面
[root@client html]# ls
1.jpg  2.jpg  3.jpg  50x.html  index.html[root@client html]# systemctl restart nginx

效果如下:

4. 日志分割

日志储存为一个文件会越来越大不方便查看,下面我们设置成按天分割日志,即第二天会产生新的日志文件,记录的是今天的日志

第一步:编写日志分割的功能脚本

[root@client html]# vim /opt/fenge.sh#!/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[root@client html]# chmod +x /opt/fenge.sh[root@client html]# crontab -e
no crontab for root - using an empty one
crontab: installing new crontab
[root@client html]# crontab -l
0 1 * * * /opt/fenge.sh[root@client html]# systemctl restart nginx
[root@client html]# netstat -natp | grep nginx
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      111019/nginx: maste 
[root@client opt]# bash -x fenge.sh 
++ date -d '-1 day' +%Y%m%d
+ d=20210623
+ logs_path=/var/log/nginx
+ pid_path=/usr/local/nginx/logs/nginx.pid
+ '[' -d /var/log/nginx ']'
+ mv /usr/local/nginx/logs/access.log /var/log/nginx/test.com-access.log-20210623
++ cat /usr/local/nginx/logs/nginx.pid
+ kill -HUP 111019
+ find /var/log/nginx -mtime +30
+ xargs rm -rf
[root@client opt]# ls /var/log/nginx/
test.com-access.log-20210623
#可以看到前一天的日志
[root@client opt]# date -s 20210625
2021年 06月 25日 星期五 00:00:00 CST
[root@client opt]# ./fenge.sh 
[root@client opt]# ls /var/log/nginx/
test.com-access.log-20210623  test.com-access.log-20210624
[root@client opt]# date
2021年 06月 25日 星期五 00:00:15 CST

5. 实现连接超时

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

[root@client opt]# vim /usr/local/nginx/conf/nginx.conf32     #keepalive_timeout  0;
33     keepalive_timeout  100;
34     client_header_timeout 80;
35     client_body_timeout 80;
[root@client opt]# nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

6. 更改进程数

[root@client opt]# cat /proc/cpuinfo | grep -c "physical"
8
[root@client opt]# ps aux | grep nginx
root     111019  0.0  0.0  20600  1496 ?        Ss   6月24   0:00 nginx: master process /usr/local/nginx/sbin/nginx
nginx    113972  0.0  0.0  23112  1428 ?        S    01:00   0:00 nginx: worker process
root     114265  0.0  0.0 112724   988 pts/1    S+   01:24   0:00 grep --color=auto nginx[root@client ~]# vim /usr/local/nginx/conf/nginx.conf2 #user  nobody;
3 worker_processes  2;
4 worker_cpu_affinity 01 10;

7. 网页压缩

[root@client ~]# vim /usr/local/nginx/conf/nginx.conf37     #gzip  on;38     gzip  on; 39     gzip_min_length 1k;40     gzip_buffers 4 16k;41     #gzip_http_version 1.1;  42     gzip_comp_level 6;    43     gzip_types text/plain application/x-javascript text/css image/jpg image/jpeg     image/png image/gif application/xml text/javascript application/x-httpd-php appli    cation/javascript application/json;44     gzip_disable "MSIE [1-6]\.";45     gzip_vary on;       [root@client ~]# cd /usr/local/nginx/html
[root@client html]# vim index.html <h1>Welcome to nginx!</h1>
<img src="3.jpg"</h1>[root@client html]# systemctl stop nginx
[root@client html]# systemctl start nginx



8. 盗链与防盗链

盗链:盗链是指服务提供商自己不提供服务的内容,通过技术手段绕过其它有利益的最终用户界面(如广告),直接在自己的网站上向最终用户提供其它服务提供商的服务内容,骗取最终用户的浏览和点击率。受益者不提供资源或提供很少的资源,而真正的服务提供商却得不到任何的收益。

防盗链:WEB应用防火墙通过实现URL级别的访问控制,对客户端请求进行检测,如果发现图片、文件等资源信息的HTTP请求来自于其它网站,则阻止盗链请求,节省因盗用资源链接而消耗的带宽和性能。

8.1 盗链

配置环境:
服务端:192.168.152.129
盗链端:192.168.152.130
Win10:192.168.152.1

服务端添加映射:
[root@client html]# vim /etc/hosts
192.168.152.129 www.1.com盗链端添加映射:
[root@server ~]# vim /etc/hosts
192.168.152.130 daolian
192.168.152.129 www.1.com
192.168.152.152 www.benet.com添加图片:
[root@server ~]# vim /usr/local/nginx/html/index.html14 <h1>Welcome to nginx!</h1>15 <img src="http://www.1.com/1.jpg"/>




win10测试一下访问服务端网页地址

win10测试一下访问盗链端网页地址

8.2 防盗链

服务端:

[root@client ~]# cd /usr/local/nginx/html
[root@client html]# ls
1.jpg  2.jpg  3.jpg  50x.html  index.html
[root@client html]# cp 2.jpg 2.png
[root@client html]# ls
1.jpg  2.jpg  2.png  3.jpg  50x.html  index.html
#这边需要进行复制一下,图片格式不一样,为了防盗链不同的体现[root@client ~]# vim /usr/local/nginx/conf/nginx.conf56         location / {57             root   html;58             index  index.html index.htm;59         }60      location ~*\.(jpg|gif|swf)$ {61             valid_referers none blocked *.1.com 1.com;                  #   62             if ( $invalid_referer ) {63                rewrite ^/ http://www.1.com/2.png;64             }65         }

盗链端不需要做操作。

使用win10访问域名+盗链端地址:

9. FPM模块参数优化

对FPM模块进行参数优化

Nginx的PHP解析功能实现如果是交由FPM(fastcgi 进程管理器)处理的,为了提高PHP的处理速度。可以对FPM模块进行参数跳转

Ngingx是通过FPM调用的PHP

FPM优化参数:

pm  #使用哪种方法启动fpm进程,可以说是static和dynamic。前者将产生固定数量的fpm进程,后者将以动态的方式产生fpm进程。

pm.max_children  #static方式下开启的fpm进程数

pm.start_server  #动态方式下初始的fpm进程数量

pm.min_spare_servers  #动态方式下最小的fpm空闲进程数

pm.max_spare_servers  #动态方式下最大的fpm空闲进程数

vim php-fpm.conf pid = run/php-fpm.pidpm = dynamicpm.max_children=20     ##static模式下空闲进程数上限,大于下面的值pm.start_servers = 5   ##动态方式下默认开启的进程数,在最小和最大之间pm.min_spare_servers = 2  ##动态方式下最少空闲进程数pm.max_spare_servers = 8  ##动态方式下最大空闲进程数

这篇关于Nginx的优化与防盗链,无名宵小速速退让!的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/705476

相关文章

Vue3 的 shallowRef 和 shallowReactive:优化性能

大家对 Vue3 的 ref 和 reactive 都很熟悉,那么对 shallowRef 和 shallowReactive 是否了解呢? 在编程和数据结构中,“shallow”(浅层)通常指对数据结构的最外层进行操作,而不递归地处理其内部或嵌套的数据。这种处理方式关注的是数据结构的第一层属性或元素,而忽略更深层次的嵌套内容。 1. 浅层与深层的对比 1.1 浅层(Shallow) 定义

HDFS—存储优化(纠删码)

纠删码原理 HDFS 默认情况下,一个文件有3个副本,这样提高了数据的可靠性,但也带来了2倍的冗余开销。 Hadoop3.x 引入了纠删码,采用计算的方式,可以节省约50%左右的存储空间。 此种方式节约了空间,但是会增加 cpu 的计算。 纠删码策略是给具体一个路径设置。所有往此路径下存储的文件,都会执行此策略。 默认只开启对 RS-6-3-1024k

使用opencv优化图片(画面变清晰)

文章目录 需求影响照片清晰度的因素 实现降噪测试代码 锐化空间锐化Unsharp Masking频率域锐化对比测试 对比度增强常用算法对比测试 需求 对图像进行优化,使其看起来更清晰,同时保持尺寸不变,通常涉及到图像处理技术如锐化、降噪、对比度增强等 影响照片清晰度的因素 影响照片清晰度的因素有很多,主要可以从以下几个方面来分析 1. 拍摄设备 相机传感器:相机传

MySQL高性能优化规范

前言:      笔者最近上班途中突然想丰富下自己的数据库优化技能。于是在查阅了多篇文章后,总结出了这篇! 数据库命令规范 所有数据库对象名称必须使用小写字母并用下划线分割 所有数据库对象名称禁止使用mysql保留关键字(如果表名中包含关键字查询时,需要将其用单引号括起来) 数据库对象的命名要能做到见名识意,并且最后不要超过32个字符 临时库表必须以tmp_为前缀并以日期为后缀,备份

SWAP作物生长模型安装教程、数据制备、敏感性分析、气候变化影响、R模型敏感性分析与贝叶斯优化、Fortran源代码分析、气候数据降尺度与变化影响分析

查看原文>>>全流程SWAP农业模型数据制备、敏感性分析及气候变化影响实践技术应用 SWAP模型是由荷兰瓦赫宁根大学开发的先进农作物模型,它综合考虑了土壤-水分-大气以及植被间的相互作用;是一种描述作物生长过程的一种机理性作物生长模型。它不但运用Richard方程,使其能够精确的模拟土壤中水分的运动,而且耦合了WOFOST作物模型使作物的生长描述更为科学。 本文让更多的科研人员和农业工作者

从状态管理到性能优化:全面解析 Android Compose

文章目录 引言一、Android Compose基本概念1.1 什么是Android Compose?1.2 Compose的优势1.3 如何在项目中使用Compose 二、Compose中的状态管理2.1 状态管理的重要性2.2 Compose中的状态和数据流2.3 使用State和MutableState处理状态2.4 通过ViewModel进行状态管理 三、Compose中的列表和滚动

Windows下Nginx的安装及开机启动

1、将nginx-1.16.1.zip解压拷贝至D:\web\nginx目录下。 2、启动Nginx,两种方法: (1)直接双击nginx.exe,双击后一个黑色的弹窗一闪而过。 (2)打开cmd命令窗口,切换到nginx目录下,输入命令 nginx.exe 或者 start nginx ,回车即可。 3、检查nginx是否启动成功。 直接在浏览器地址栏输入网址 http://lo

nginx介绍及常用功能

什么是nginx nginx跟Apache一样,是一个web服务器(网站服务器),通过HTTP协议提供各种网络服务。 Apache:重量级的,不支持高并发的服务器。在Apache上运行数以万计的并发访问,会导致服务器消耗大量内存。操作系统对其进行进程或线程间的切换也消耗了大量的CPU资源,导致HTTP请求的平均响应速度降低。这些都决定了Apache不可能成为高性能WEB服务器  nginx:

web群集--nginx配置文件location匹配符的优先级顺序详解及验证

文章目录 前言优先级顺序优先级顺序(详解)1. 精确匹配(Exact Match)2. 正则表达式匹配(Regex Match)3. 前缀匹配(Prefix Match) 匹配规则的综合应用验证优先级 前言 location的作用 在 NGINX 中,location 指令用于定义如何处理特定的请求 URI。由于网站往往需要不同的处理方式来适应各种请求,NGINX 提供了多种匹

nginx长连接的问题

转自: http://www.360doc.com/content/12/1108/17/1073512_246644318.shtml