Nginx的优化,安全与防盗链

目录

一、Nginx的页面优化

1)Nginx的网页压缩 

2)配置Nginx的图片缓存  

3)Nginx的连接超时设置

4)Nginx的并发设置 

查看cpu的核心数,根据核心数来设置工作进程数

修改工作进程核心数 :

测试结果:

二、Nginx的页面安全 

1)查看Nginx版本的方式

方式一:curl模拟访问获取

方式二:浏览器访问查看 

2)隐藏版本号 

方法一:修改配置文件,关闭版本号

测试结果: 

方法二:修改源码文件中的版本号,重新编译安装

三、Nginx的日志分割 

编写日志分割脚本

2)执行脚本进行测试 

3)将日志脚本添加至计划性任务 

四、Nginx防盗链 

1)盗链的过程

2)Nginx防盗链的设置  

修改主配配置文件,添加防盗链设置

在 /var/local/nginx/html 下放置好error.png 

进行盗链测试 

第三方用户访问盗链主机:

第三方访问原主机 :

五、fpm参数优化 


一、Nginx的页面优化

1)Nginx的网页压缩 

在Nginx的ngx_http_gzip_module压缩模块提供对文件内容压缩的功能。进行相关的配置修改,就能实现Nginx页面的压缩,达到节约带宽,提升用户访问速度

vim /usr/local/nginx/conf/nginx.conf
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+rss image/jpg image/jpeg image/png image/gif application/x-httpd-php application/javascript application/json;
}

重启服务,进行访问测试: 

2)配置Nginx的图片缓存  

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

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

vim /usr/local/nginx/conf/nginx.conf
http {
.................location ~* \.(gif|jpg|jepg|bmp|ico)$ {root html;expires 1d;             }
}

重启服务,测试访问:

3)Nginx的连接超时设置

  • HTTP有一个KeepAlive模式,它告诉web服务器在处理完一个请求后保持这个TCP连接的打开状态。若接收到来自同一客户端的其它请求,服务端会利用这个未被关闭的连接,而不需要再建立一个连接
  • KeepAlive 在一段时间内保持打开状态,它们会在这段时间内占用资源。占用过多就会影响性能
  • 在企业网站中,为了避免同一个客户长时间占用连接,造成资源浪费,可设置相应的连接超时参数,实现控制连接访问时间。可以修改配置文件 nginx.conf,设置 keepalive_timeout超时
vim /usr/local/nginx/conf/nginx.confhttp {...... keepalive_timeout 65 180;       //设置连接超时时间    client_header_timeout 80;client_body_timeout 80;...... }
  • 指定KeepAlive的超时时间(timeout) 。指定每个TCP连接最多可以保持多长时间,服务器将会在这个时间后关闭连接
  • Nginx的默认值是65秒,有些浏览器最多只保持60秒,所以可以设定为60秒。若将它设置为0,就禁止了keepalive 连接
  • 第二个参数(可选的)指定了在响应头Keep-Alive: timeout=t ime中的time值。这个头能够让一 些浏览器主动关闭连接,这样服务器就不必去关闭连接了。没有这个参数,Nginx 不会发送Keep- Alive 响应头

重启服务,访问测试: 

4)Nginx的并发设置 

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

查看cpu的核心数,根据核心数来设置工作进程数

 #1、查看cpu核数cat /proc/cpuinfo |grep processor|wc -l或cat /proc/cpuinfo |grep -c processor或cat /proc/cpuinfo | grep -c "physical id"

[root@localhost html]#ps aux | grep nginx

修改工作进程核心数 :

vim /usr/local/nginx/conf/nginx.confworker_processes  2;        #修改为与CPU核数相同worker_cpu_affinity 01 10;  #设置每个进程由不同cpu处理,进程数配为4时0001 0010 0100 1000​

测试结果:

[root@localhost html]#ps aux | grep nginx

二、Nginx的页面安全 

——隐藏Nginx的版本号

1)查看Nginx版本的方式

方式一:curl模拟访问获取

[root@localhost ~]#curl -I 192.168.73.105

方式二:浏览器访问查看 

火狐访问浏览器 ,F12查看网络信息

2)隐藏版本号 

方法一:修改配置文件,关闭版本号

 vim /usr/local/nginx/conf/nginx.confhttp {include       mime.types;default_type  application/octet-stream;server_tokens off;      #添加这一行,关闭版本号......}

测试结果: 

方法二:修改源码文件中的版本号,重新编译安装

cd /opt/nginx-1.12.0/src/core/
#修改前进行备份
cp nginx.h  nginx.h.bakvimn ginx.h#define NGINX_VERSION      "1.12.0"
#define NGINX_VER          "nginx/" NGINX_VERSION

修改完配置后切换到Nginx软件包中,进行重新编译安装 :

cd /opt/nginx-1.12.0/
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_modulemake -J 2 && make install

再次修改主配置文件,打开版本号显示 :

vim /usr/local/nginx/conf/nginx.confhttp {include       mime.types;default_type  application/octet-stream;server_tokens on;......}

重启服务,进行测试: 

三、Nginx的日志分割 

Nginx与apache的不同之处,就是Nginx本身并为设计日志分割工具,所以需要运维人员进行脚本编写来实现日志分割

编写日志分割脚本

cd /opt
vim cutlogs.sh#!/bin/bash#nginx 分割日志脚本
#用变量day获取前天日期的时间记录
day=$(date -d "-1 day" "+%Y%m%d")
#获取日志的目录
logs_path="/var/log/nginx"
#获取运行时nginx的进程号
pid_path="/usr/local/nginx/logs/nginx.pid"
#二元表达式,如果前面不成立则执行后面的式子
#前面判断该目录是否存在,后面则表示不存在则自动创建该目录
[ -d $logs_path ] || mkdir -p $logs_path
#将生成的日志按照date生成的时间格式改名并移动到指定的路径中保存
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 {} \ ;

2)执行脚本进行测试 

3)将日志脚本添加至计划性任务 

[root@localhost opt]#vim cutlogs.sh
[root@localhost opt]#chmod +x cutlogs.sh 
[root@localhost opt]#crontab -e
0 1 * * * /opt/cutlogs.sh

四、Nginx防盗链 

1)盗链的过程

Nginx盗链的过程与apache一致,均是通过网页浏览,将网站图片重定向到自己的网站上

Apache网页的优化,安全与防盗链

2)Nginx防盗链的设置  

修改主配配置文件,添加防盗链设置

vim /usr/local/nginx/conf/nginx.conf
http {
...........
server{
...........
location ~* \.(jpg|gif|swf)$ {root  html;expires 1d;valid_referers none blocked *.test.com test.com;if ( $invalid_referer ) {rewrite ^/ http://www.test.com/error.png;}}
............
}
...............
}

在 /var/local/nginx/html 下放置好error.png 

进行盗链测试 

盗链主机html网页设置:

第三方用户访问盗链主机:

访问前设置:

  1. 关闭防火墙工具firewalld和selinux
  2. 将域名对应的IP添加到  /etc/hosts 中 

第三方访问原主机 :

五、fpm参数优化 

Nginx的PHP解析功能实现如果是交由FPM处理的,为了提高PHP的处理速度,可对FPM模块进行参数的调整

根据服务器的内存与服务负载,调整FPM模块参数

 vim /usr/local/php/etc/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    #动态方式下最大空闲进程数​​kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid`         #重启php-fpmnetstat -anpt | grep 9000

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

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

相关文章

java做RPG小游戏

题目 java课设,一个游戏中有多种角色(Character),例如:国王(King)、皇后(Queen)、骑士(Knight)、老怪(Troll)。 角色之间可能要发生战斗(fight)&…

【Java游戏合集】手把手教你制作游戏

家人们,今天我们来看一下学Java必练的10款游戏项目! 大家都知道学习编程必须要做的就是敲代码和做项目练手了,那项目有难有易,很多小伙伴不知道从哪里找项目来练习,今日我们来看一下初级项目中都有哪些能让我们来练手…

Java桌面游戏巡礼——国外Java游戏合集(第一回)

1、 Virus Effect 这是一个2D的Java横板射击游戏,作者在其中融入了很多FPS(First Personal Shooting Game)要素,角色能够进行换枪、调整射击角度、装弹拆弹等仿真操作,并于游戏内设置有教学关卡,即使是从未…

java保姆级教程—— 1.什么是游戏

引言: Java保姆级教程是笔者在暑假时,为学弟们准备的java游戏教程,今天整理了一下,共享给网友们,笔者也是学生,若有大神发现文中存在误区,还请私信笔者。注:java游戏保姆级教程&…

Java游戏开发——对对碰

游戏介绍: 对对碰游戏在n*n的游戏池中进行,每个格子中有一个图案。鼠标连续选中两个横排或竖排相邻的图案,它们的位置会互换,互换后如果横排或者竖排有3个以上相同的图像,则可以消去该图像,并得分。 游戏…

连连看游戏的设计与实现——基于JAVA语言的小游戏

说明:本篇博客主要讲述练练看游戏的设计与实现。前半部分为分析与类和属性的说明,后半部分为程序的实现与程序代码。第一次写小游戏,仍存在许多问题,也借鉴了CSDN前辈的代码想法,如有不妥,还望多批评指正。…

Java写的第一个小游戏(续)

优化代码(数据维护): 注:此为小游戏最终版本 代码做到最优最简 基于之前发表的文章详情可见 点击查看前文 回顾之前的代码我们可以看到很多的固定常量值或是属性我们都会大量的重复使用,这并不符合我们代码简洁易懂的特点 所以我们可以把重复出现的量或是属性或是方法使用面向…

java小游戏超级玛丽:06.第二关的设计

第二关预览图: 判断是否为第二关 if (sort 2) {} 砖块位置图: 砖块坐标: A(240,390) B(270,360) C(300,330) D(270,360) E(300,360) F(330,390) G(360,360) H(390,390) I(420,390) f1(240,300) 空1(420,270&a…

java小游戏超级玛丽:07.第三关的设计

第三关预览图 砖块位置图: 砖块坐标: A(290,390) B(320,360) C(350,330) D(320,390) E(350,480) F(350,390) G(380,300) H(380,330) I(380,360) J(380,390) K(410,270) L(410,300) M(410,330) N(410,360) O(410,390) P(60,390) Q(90,360) R(90…

【Java十大热门游戏合集】Java经典游戏项目

家人们,今天我们来看一下学Java必练的10款游戏项目! 大家都知道学习编程必须要做的就是敲代码和做项目练手了,那项目有难有易,很多小伙伴不知道从哪里找项目来练习,今日我们来看一下初级项目中都有哪些能让我们来练手…

Java游戏开发——开心农场

游戏介绍: “开心农场”是一款以种植为主的社交游戏。用户可以扮演一个农场的农场主,在自己的农场里开垦土地,种植各种水果蔬菜。本次开发了一个“开心农场”游戏,运行程序,效果如下图所示。鼠标先选定指定土地&#…

JAVA 实现《超级玛丽》游戏

前言 在你的童年记忆里,是否有一个蹦跳、顶蘑菇的小人? 如果你回忆起了它,你定然会觉得现在它幼稚、无聊,画面不漂亮,游戏不精彩……但请你记住:这才是真正的游戏,它给了你无限的欢乐&#xf…

Java游戏开发——连连看

游戏介绍: “连连看”是一款来源于我国台湾的桌面小游戏,主要考验的是玩家们的眼力,在有限的时间内,只要能把所有能连接的相同图案,两个两个的找出来,每找到一对,它们就会自动消失,只…

java小游戏超级玛丽:05.第一关的设计

第一关效果图: 目录 判断是否为第一关 绘制第一关的场景 绘制地面(for循环) 绘制砖块 绘制水管 生成Obstatic列表的getter方法 绘制障碍物 判断是否为第一关 if(sort 1){ } 在上面有定义变量sort 绘制第一关的场景 绘制地面&…

程序员从0到收获心仪offer,我靠训练营实现了180度逆袭!

我相信,在未来的职场中,我也能通过这段时间养成的学习习惯和生活习惯让自己一步步成为更好的自己,以自己为荣 我在大学里主修计算机科学与技术,一个普通的院校,一个算是常见的专业,我知道我的学历和一些其他…

10 【组件编码流程 组件自定义事件 全局事件总线】

1.组件编码流程 组件化编码流程: ​ (1).拆分静态组件:组件要按照功能点拆分,命名不要与html元素冲突。 ​ (2).实现动态组件:考虑好数据的存放位置,数据是一个组件在用,还是一些组件在用: ​ 1…

QQ互联地址 中注册的QQ开发者 在哪里提交审核?

QQ互联地址:https://connect.qq.com 废话不说,直接上图: 有时点击后没反应,耐心 多试几次! 然后 就会看到 提交审核的表单了, 有没发现 这个提交审核的 链接藏的有点深!! 哈哈哈&am…

QQ小程序打开指定QQ群

官方提供了接口&#xff1a; <view class"footer"><button open-type "openGroupProfile" class"footer-tips" group-id"620033746">v1.0 by&#xff1a;IWH <text>加群玩&#xff01;</text></button&g…

打开图片链接直接打开QQ对话框

<a href"tencent://message/?uin7530****&SiteQQ交谈&Menuyes" target"blank"> <img border"0" src"http://wpa.qq.com/pa?p1:7530*****:7" alt"有事Q我吧" width"71" height"2…

QQ的分享

使用的sdk版本&#xff1a; V2.2.2&#xff08;发布日期&#xff1a;2014.3.17&#xff09; 弱弱的提醒下&#xff1a; 1.配置清单等环境搭建&#xff0c;这里就不多说了&#xff0c;可以去看看我的另外一篇博客&#xff0c;QQ的第三方登录&#xff0c;那里有介绍。 2.这里集…