目录:

一、隐藏版本号

二、修改用户与组

三、缓存时间

四、日志切割

五、连接超时

六、更改进程数

七、配置网页压缩

一、隐藏版本号

  • 可以使用 Fiddler 工具抓取数据包,查看 Nginx版本
  • 也可以在 CentOS 中使用命令 curl -I http://192.168.0.102 显示响应报文首部信息
curl -I http://192.168.80.10

方法一:修改配置文件方式

1 vim /usr/local/nginx/conf/nginx.conf
2 http {
3 include mime.types;
4 default_type application/octet-stream;
5 server_tokens off; #添加,关闭版本号
6 ......
7 }
systemctl restart nginx
curl -I http://192.168.80.10

方法二:修改源码文件,重新编译安装

 1 vim /opt/nginx-1.12.0/src/core/nginx.h
2 #define NGINX_VERSION "1.1.1" #修改版本号
3 #define NGINX_VER "IIS" NGINX_VERSION #修改服务器类型
4 cd /opt/nginx-1.12.0/
5 ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module
6 make && make install
7
8 vim /usr/local/nginx/conf/nginx.conf
9 http {
10 include mime.types;
11 default_type application/octet-stream;
12 server_tokens on;
13 ......
14 }
15
16 systemctl restart nginx
17 curl -I http://192.168.80.10

二、修改用户与组

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

三、缓存时间

 1 vim /usr/local/nginx/conf/nginx.conf
2 http {
3 ......
4 server {
5 ......
6 location / {
7 root html;
8 index index.html index.htm;
9 }
10
11 location ~ \.(gif|jpg|jepg|png|bmp|ico)$ { #加入新的 location,以图片作为缓存对象
12 root html;
13 expires 1d; #指定缓存时间,1天
14 }
15 ......
16 }
17 }
18
19 systemctl restart nginx
http://192.168.80.10/game.jpg
在Linux系统中,打开火狐浏览器,右击点查看元素
选择 网络 ---> 选择 HTML、WS、其他
访问 http://192.168.80.10 ,双击200响应消息查看响应头中包含 Cahce-Control:max-age=86400 表示缓存时间是 86400 秒。也就是缓存一天的时间,一天之内浏览器访问这个页面,都是用缓存中的数据,而不需要向 Nginx 服务器重新发出请求,减少了服务器的使用带宽。

四、日志切割

 1 vi /opt/fenge.sh
2 #!/bin/bash
3 # Filename: fenge.sh
4 d=$(date -d "-1 day" "+%Y%m%d") #显示前一天的时间
5 logs_path="/var/log/nginx"
6 pid_path="/usr/local/nginx/logs/nginx.pid"
7 [ -d $logs_path ] || mkdir -p $logs_path #创建日志文件目录
8 mv /usr/local/nginx/logs/access.log ${logs_path}/kgc.com-access.log-$d #移动并重命名日志文件
9 kill -USR1 $(cat $pid_path) #重建新日志文件
10 find $logs_path -mtime +30 -exec rm -rf {} \; #删除30天之前的日志文件
11 #find $logs_path -mtime +30 |xargs rm -rf
12
13 chmod +x /opt/fenge.sh
14 /opt/fenge.sh
15 ls /var/log/nginx
16 ls /usr/local/nginx/logs/access.log
17
18 crontab -e
19 0 1 * * * /opt/fenge.sh

五、连接超时

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

六、更改进程数

1 cat /proc/cpuinfo | grep -c "physical id"    #查看cpu核数
2 ps aux | grep nginx #查看nginx主进程中包含几个子进程
3
4 vim /usr/local/nginx/conf/nginx.conf
5 worker_processes 2; #修改为核数相同或者2倍
6 worker_cpu_affinity 01 10; #设置每个进程由不同cpu处理,进程数配为4时0001 0010 0100 1000
7
8 systemctl restart nginx

七、配置网页压缩

  • Nginx的ngx_http_gzip_module压 缩模块提供对文件内容压缩的功能
  • 允许Nginx服务器将输出内容在发送客户端之前进行压缩,以节约网站带宽,提升用户的访问体验,默认已经安装
  • 可在配置文件中加入相应的压缩功能参数对压缩性能进行优化
 1 vim /usr/local/nginx/conf/nginx.conf
2 http {
3 ......
4 gzip on; #取消注释,开启gzip压缩功能
5 gzip_min_length 1k; #最小压缩文件大小
6 gzip_buffers 4 16k; #压缩缓冲区,大小为4个16k缓冲区
7 gzip_http_version 1.1; #压缩版本(默认1.1,前端如果是squid2.5请使用1.0)
8 gzip_comp_level 6; #压缩比率
9 gzip_vary on; #支持前端缓存服务器存储压缩页面
10 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; #压缩类型,表示哪些网页文档启用压缩功能
11 ......
12 }
1 cd /usr/local/nginx/html
2 先将game.jpg文件传到/usr/local/nginx/html目录下
3 vim index.html
4 ......
5 <img src="game.jpg"/> #网页中插入图片
6 </body>
7 </html>
8
9 systemctl restart nginx
在Linux系统中,打开火狐浏览器,右击点查看元素
选择 网络 ---> 选择 HTML、WS、其他
访问 http://192.168.80.10 ,双击200响应消息查看响应头中包含 Content-Encoding: gzip

八、配置防盗链

 1 vim /usr/local/nginx/conf/nginx.conf
2 http {
3 ......
4 server {
5 ......
6 location ~*\.(jpg|gif|swf)$ {
7 valid_referers *.kgc.com kgc.com;
8 if ( $invalid_referer ) {
9 rewrite ^/ http://www.kgc.com/error.png;
10 #return 403;
11 }
12 }
13 ......
14 }
15 }
1 ~* \.(jpg|gif|swf)$ :这段正则表达式表示匹配不区分大小写,以.jpg 或.gif 或.swf 结尾的文件;
2
3 valid_referers :设置信任的网站,可以正常使用图片;
4
5 后面的网址或者域名 :referer 中包含相关字符串的网址;
6
7 if语句:如果链接的来源域名不在valid_referers所列出的列表中,$invalid_referer为1,则执行后面的操作,即进行重写或返回 403 页面。
 1 网页准备:
2 Web源主机(192.168.80.10)配置:
3 cd /usr/local/nginx/html
4 将game.jpg、error.png文件传到/usr/local/nginx/html目录下
5 vim index.html
6 ......
7 <img src="game.jpg"/>
8 </body>
9 </html>
10
11 echo "192.168.80.10 www.kgc.com" >> /etc/hosts
12 echo "192.168.80.11 www.benet.com" >> /etc/hosts
13
14 盗链网站主机(192.168.80.11):
15 cd /usr/local/nginx/html
16 vim index.html
17 ......
18 <img src="http://www.kgc.com/game.jpg"/>
19 </body>
20 </html>
21
22 echo "192.168.80.10 www.kgc.com" >> /etc/hosts
23 echo "192.168.80.11 www.benet.com" >> /etc/hosts
24
25 在盗图网站主机上进行浏览器验证
26 http://www.benet.com

web源主机配置

盗链主机网站配置

  

  

  

  

Nginx优化与防盗链的更多相关文章

  1. 16.Nginx优化与防盗链

    Nginx优化与防盗链 目录 Nginx优化与防盗链 隐藏版本号 修改用户与组 缓存时间 日志切割 小知识 连接超时 更改进程数 配置网页压缩 配置防盗链 配置防盗链 隐藏版本号 可以使用 Fiddl ...

  2. Nginx的优化与防盗链

    Nginx的优化与防盗链 1.隐藏版本号 2.修改用户与组 3.缓存时间 4.日志切割 5.连接超时 6.更改进程数 7.配置网页压缩 8.配置防盗链 9.fpm参数优化 1.隐藏版本号: 可以使用 ...

  3. nginx的优化和防盗链

    nginx的优化和防盗链 目录 nginx的优化和防盗链 一.nginx的优化 1. 隐藏版本号 (1)隐藏版本号的原因 (2)查看版本号的方法 (3)隐藏方法一:修改配置文件 (4)隐藏方法二:修改 ...

  4. nginx secure_link下载防盗链

    下载服务器上有众多的软件资源, 可是很多来源不是本站,是迅雷.flashget, 源源不断的带宽,防盗链绝对是当务之急. 使用来源判断根本不靠谱,只能防止一些小白站点的盗链,迅雷之类的下载工具完全无效 ...

  5. nginx如何设置防盗链

    关于nginx防盗链的方法网上有很多教程,都可以用,但是我发现很多教程并不完整,所做的防盗链并不是真正的彻底的防盗链! 一般,我们做好防盗链之后其他网站盗链的本站图片就会全部失效无法显示,但是您如果通 ...

  6. nginx服务器图片防盗链的方法

    nginx服务器图片防盗链的方法<pre> location ~* \.(gif|jpg|png|jpeg)$ { expires 30d; valid_referers *.shuche ...

  7. 【转】nginx如何设置防盗链

    转自博客园作者:howhy,文章地址:nginx如何设置防盗链.大佬写的甚好,在此备份一下 关于nginx防盗链的方法网上有很多教程,都可以用,但是我发现很多教程并不完整,所做的防盗链并不是真正的彻底 ...

  8. Nginx 十大优化 与 防盗链

    Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,它的发音为“engine X”,是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP 代理服务器.Ngin ...

  9. nginx配置图片防盗链

    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)${ expires 30d; access_log off; valid_referers none blocked ...

随机推荐

  1. 心酸!30岁深漂失业3个月,从巅峰跌落谷底,大龄Android开发必须要懂的事!

    2021年3月,我的前同事,在我们群里说他准备回老家了,问我们有没有人可以暂时收养他的猫. --他说,这周末就要离开深圳了. 他失业了.3个多月没收入,还要交着房租,过年来之后找了快一个月的工作也没有 ...

  2. 对抗防御之对抗样本检测(一):Feature Squeezing

    引言 在之前的文章中,我们介绍了对抗样本和对抗攻击的方法.在该系列文章中,我们介绍一种对抗样本防御的策略--对抗样本检测,可以通过检测对抗样本来强化DNN模型.本篇文章论述其中一种方法:feature ...

  3. JQuery常用属性操作,动画,事件绑定

    jQuery 的属性操作        html() 它可以设置和获取起始标签和结束标签中的内容. 跟 dom 属性 innerHTML 一样.        text() 它可以设置和获取起始标签和 ...

  4. Linux 内核预备知识:浅析 offsetof 宏以及新手的所思所想

    最近一头扎进了 Linux 内核的学习中,对于我这样一个没什么 C 语言基础的新生代 Java 农民工来说实在太痛苦了.Linux 内核的学习,需要的基础知识太多太多了:C 语言.汇编语言.数据结构与 ...

  5. SQL 练习40

    按照出生日期来计算学生的年龄信息 IF OBJECT_ID('GetStudentAge','FN') IS NOT NULL DROP FUNCTION GetStudentAge GO CREAT ...

  6. Dockerfile 多阶段构建实践

    写在前面 在Docker Engine 17.05 中引入了多阶段构建,以此降低构建复杂度,同时使缩小镜像尺寸更为简单.这篇小作文我们来学习一下如何编写实现多阶段构建的Dockerfile 关于doc ...

  7. java-将数组调整为左奇右偶

    先将偶数个数找出来 然后将奇数偶数分别保存到数组 然后写入 时间复杂度为O(n); public class test{ public static void main(String[] args){ ...

  8. 获取访问者真实ip地址?我觉得不可能

    我们真的能通过请求来获取用户真实的ip地址嘛? 答案是不能,如果能,肯定是我学的不够深入,欢迎交流指正. 那么写这篇文章的意义是什么?我们接着往下看. IP地址相当于电脑在网络上的身份证,但事实上IP ...

  9. Java线程池中submit()和execute()方法有什么区别

    两个方法都可以向线程池提交任务,execute()方法的返回类型是void,它定义在Executor接口中,而submit()方法返回有计算结构的Future对象,它定义在ExecutorServic ...

  10. wpf 的style

    <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" x ...