目录
隐藏nginx版本号
查看版本号
隐藏版本信息
修改用户与组
缓存时间
日志分割
配置Nginx实现连接超时
更改Nginx运行进程数
配置Nginx实现网页优化压缩功能
压缩功能参数
配置防盗链
补充:面试题:用过哪些nginx的模块和做过哪些优化 
首页 运维 nginx Nginx防盗链与服务优化配置的示例分析

Nginx防盗链与服务优化配置的示例分析

May 15, 2023 am 10:31 AM
nginx

      隐藏nginx版本号

      查看版本号

      方法一:curl命令

      可以在 CentOS 中使用命令 curl -I http://192.168.80.130 显示响应报文首部信息。

      curl -I http://192.168.80.130

      Nginx防盗链与服务优化配置的示例分析

      方法二:在网页中查看

      1. #切换至html目录,拖一个图片进去
      cd /usr/local/nginx/html

      2. #在网页中查看
      http://192.168.59.118/game.png

      Nginx防盗链与服务优化配置的示例分析

      隐藏版本信息

      方法一:修改配置文件

      1.#修改配置文件
      vim /usr/local/nginx/conf/nginx.conf
       
          ```handlebars
      http {
          include       mime.types;
          default_type  application/octet-stream;
          server_tokens off;                        #添加,关闭版本号
          ......
      }
       
      2.#重启nginx
      systemctl restart nginx
       
      3.#查看版本是否被隐藏
      curl -I http://192.168.80.130
      登录后复制

      Nginx防盗链与服务优化配置的示例分析

      Nginx防盗链与服务优化配置的示例分析

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

      可以自定义版本号,可以让人迷惑

      1. #切换至nginx安装包所在目录
      cd /opt/
      2. #停止nginx服务
      systemctl stop nginx.service
      3. #切换至安装目录
      cd nginx-1.12.0/
      4. #切换至内核目录
      cd src/core/
      5. #进入配置文件
      vim nginx.h
      
      #define NGINX_VERSION      "老铁"
      #define NGINX_VER          "666/" NGINX_VERSION
      
      6. #切换至文件目录
      cd ../../
      
      7. #编译
      ./configure \
      --prefix=/usr/local/nginx \
      --user=nginx \
      --group=nginx \
      --with-http_stub_status_module
      
      8. #安装
      make && make install -j4
      
      9. #将配置文件下的之前关闭版本信息开启
      vim /usr/local/nginx/conf/nginx.conf
      server_tokens on;
      
      10. #重启nginx
      systemctl restart nginx
      
      11. #查看版本信息
      curl -I http://192.168.59.118
      登录后复制

      修改用户与组

      1. #修改配置文件
      vim /usr/local/nginx/conf/nginx.conf
      
      user  dayu dayu; #取消注释,修改用户为 dayu ,组为 dayu
      
      2. #创建非登录用户
      useradd -s /sbin/nologin dayu
      
      3. #重启服务
      systemctl restart nginx
      
      4. #查看是否修改成功
      ps aux | grep nginx
      登录后复制

      Nginx防盗链与服务优化配置的示例分析

      Nginx防盗链与服务优化配置的示例分析

      Nginx防盗链与服务优化配置的示例分析

      缓存时间

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

      1. #修改配置文件
      vim /usr/local/nginx/conf/nginx.conf
              #添加以下内容
              location ~ \.(jpg|png|bmp|gif)$ {
                  root   html;
                  expires 1d;
              }
      
      
      2. #查看是否有语法错误
      nginx -t
      
      3. #重启服务
      systemctl restart nginx.service 
      
      4.#在网页中查看服务
      http://192.168.80.130/good.jpg
      
       Cahce-Control:max-age=86400 表示缓存时间是 86400 秒。
      也就是缓存一天的时间,一天之内浏览器访问这个页面,都是用缓存中的数据,
      而不需要向 Nginx 服务器重新发出请求,减少了服务器的使用带宽。
      登录后复制

      Nginx防盗链与服务优化配置的示例分析

      Nginx防盗链与服务优化配置的示例分析

      日志分割

      随着Nginx运行时间的增加,产生的日志也会逐渐增加,为了方便掌握Nginx的运行状态,需要时刻关注Nginx日志文件。太大的日志文件对监控是一个大灾难,不便于分析排查,需要定期的进行日志文件的切割。

      1. #写脚本
      vim /usr/local/nginx/nginx_log.sh 
      
      #!/bin/bash
      #this is for divide nginx log
      d=$(date +%F -d -1day)                                       #显示前一天的时间
      path="/var/log/nginx"   
      pid="/usr/local/nginx/logs/nginx.pid"
      
      [ -d $path ] ||mkdir -p $path                                #创建日志文件目录
      mv /usr/local/nginx/logs/access.log ${path}/www.yxp.com-$d   #移动并重命名日志文件
      kill -USR1 $(cat $pid)                                       #重建新日志文件
      find $path -mtime +30 -delete                                #删除30天之前的日志文件
      
      2. #赋予权限
      chmod +x /usr/local/nginx/nginx_log.sh 
      
      3. #计划任务
      [root@localhost nginx]#crontab -e
      
      30 1 * * * /usr/local/nginx/nginx_log.sh
      登录后复制

      Nginx防盗链与服务优化配置的示例分析

      Nginx防盗链与服务优化配置的示例分析

      Nginx防盗链与服务优化配置的示例分析

      配置Nginx实现连接超时

      HTTP有一个KeepAlive模式,它告诉web服务器在处理完一个请求后保持这个TCP连接的打开状态。若接收到来自同一客户 端的其它请求,服务端会利用这个未被关闭的连接,而不需要再建立一个连接。

      KeepAlive在一段时间内 保持打开状态,它们会在这段时间内占用资源。占用过多就会影响性能。

      vim /usr/ local/nginx/conf/nginx. conf
      http {
      ......
      keepalive_ timeout 65 180;
      client header timeout 80;
      client_ body_ timeout 80;
      ......
      }
      systemctl restart nginx
      登录后复制

      keepalive_ timeout

      • 指定KeepAlive的超时时间(timeout) 。指定每个TCP连接最多可以保持多长时间,服务器将会在这个时间后关闭连接。

      • Nginx的默认值是65秒,有些浏览器最多只保持60秒,所以可以设定为60秒。若将它设置为0,就禁止了keepalive 连接。

      • 第二个参数(可选的)指定了在响应头Keep-Alive: timeout=t ime中的time值。这个头能够让一 些浏览器主动关闭连接,这样服务器就不必去关闭连接了。没有这个参数,Nginx 不会发送Keep- Alive 响应头。

      client_ header_ timeout

      客户端向服务端发送-一个完整的request header 的超时时间。如果客户端在指定时间内没有发送一个完整的request header, Nginx返回HTTP 408 (Request Timed Out) 。

      client_ body_ timeout

      指定客户端与服务端建立连接后发送requestbody的超时时间。如果客户端在指定时间内没有发送任何内容,Nginx返回HTTP 408 (Request Timed Out )。

      Nginx防盗链与服务优化配置的示例分析

      Nginx防盗链与服务优化配置的示例分析

      更改Nginx运行进程数

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

      更改进程数的配置方法

      修改配置文件,修改进程配置参数

      修改配置文件的worker_processes参数

      • 一般设为CPU的个数或者核数

      • 在高并发的情况下可设置为CPU个数或者核数的2倍

      增加进程数,可减少系统的开销,提升服务速度

      使用ps aux查看运行进程数的变化情况

      [root@www conf]# cat /proc/cpuinfo | grep -c "physical"
      4
      [root@www conf]# vi nginx.conf
      worker_ processes 4;
      [root@www conf]# systemctl restart nginx
      [root@www conf]# ps aux | grep nginx
      登录后复制

      默认情况,Nginx的多个进程可能跑在一 个CPU上,可以分配不同的进程给不同的CPU处理,充分利用硬件多核多CPU。
      在一台4核物理服务器,进行配置,将进程进行分配。

      [root@www conf]# vi nginx.conf
      worker_ processes 4;
      worker_ cpu_ affinity 0001 0010 0100 1000;
       
      1代表CPU的位置
      登录后复制

      Nginx防盗链与服务优化配置的示例分析

      Nginx防盗链与服务优化配置的示例分析

      Nginx防盗链与服务优化配置的示例分析

      配置Nginx实现网页优化压缩功能

      • Nginx的ngx_http_ gzip_module压缩模块提供对文件内容压缩的功能

      • 允许Nginx服务器将输出内容在发送客户端之前进行压缩,以节约网站带宽,提升用户的访问体验,默认已经安装

      • 可在配置文件中加入相应的压缩功能参数对压缩性能进行优化

      压缩功能参数

      1. #修改配置文件
         gzip on;                          #取消注释,开启gzip压缩功能
         gzip_min_length 1k;              #最小压缩文件大小
         gzip_buffers 4 16k;              #压缩缓冲区,大小为4个16k缓冲区
         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+rss image/jpg image/jpeg image/png image/gif application/x-httpd-php application/javascript application/json;       #压缩类型,表示哪些网页文档启用压缩功能
      
      2. #重启服务
      systemctl restart nginx.service 
      
      
      3. #网页查看
      http://192.168.59.118/game.png
      登录后复制

      Nginx防盗链与服务优化配置的示例分析

      Nginx防盗链与服务优化配置的示例分析

      Nginx防盗链与服务优化配置的示例分析

      Nginx防盗链与服务优化配置的示例分析

      配置防盗链

      在企业网站服务中,一般都要配置防盗链功能,以避免网站内容被非法盗用,造成经济损失,也避免了不必要的带宽浪费。

      Nginx 的防盗链功能也非常强大,在默认情况下,只需要进行很简单的配置,即可实现防盗链处理。

      vim /usr/ local/nginx/conf/nginx. conf
      http {
      ......
         server {
           ......
       
          location ~* \. (jpglgiflswf)$ {
       
            valid_ referers none blocked * . kgc. com kgc . com;
       
              if ( $invalid referer ) {
       
              rewrite ^/ http: I /www. kgc. com/error。pngi
       
                 #return 403;
       
               }
       
            }
       
        ......
       
         }
      }
      登录后复制

      ~* \. (jpgIgifIswf)$ :这段正则表达式表示匹配不区分大小写,以.jpg或.gif 或.swf结尾的文件:
       
      valid_ referers :设置信任的网站,可以正常使用图片:
       
      none:允许没有http_refer的请求访问资源(根据Referer的定义,它的作用是指示一个请求是从哪里链接过来的,如果直接在浏览器的地址栏中输入一个资源的URL地址,那么这种请求是不会包含Referer 字段的),如http:/ /www.dayu.com/ game.jpg
       
      我们使用http://www. dayu.com访问显示的图片,可以理解成http://www. dayu.com/game.jpg这个请求是从http://www. dayu.com这个链接过来的。
       
      blocked: 允许不是http://开头的, 不带协议的请求访问资源;
       
      *. dayu. com: 只允许来自指定域名的请求访问资源,如http://www. dayu.com
       
      if语句:如果链接的来源域名不在valid_ referers所列出的列表中,$invalid_ referer为true, 则执行后面的操作,即进行重写或返回403 页面。

      Nginx防盗链与服务优化配置的示例分析

      Nginx防盗链与服务优化配置的示例分析

      第二台机器配置内容:

      Nginx防盗链与服务优化配置的示例分析

      Nginx防盗链与服务优化配置的示例分析

      Nginx防盗链与服务优化配置的示例分析

      Nginx防盗链与服务优化配置的示例分析

      Nginx防盗链与服务优化配置的示例分析

       现在还是可以正常显示的

      Nginx防盗链与服务优化配置的示例分析

      现在防盗图出现

      补充:面试题:用过哪些nginx的模块和做过哪些优化 

      gzip       ### 网站数据压缩
      rewrite       ### 地址重写
      stub_ status     ###  统计nginx服务状态
      ssl 支持https,      ### 得先用openss1或者TLS工具生成相关证书和私钥文件。再在ssl模块配置中调用证书和私钥
      upstream      ### 使用nginx做反向代理web群集,定义群集服务器池
      stream       ### 用于定义4层反向代理的
      auth_ basic     ### 用户认证
      fastcgi        ### 转发请求给php
      --with-模块名       ### 开启模块
      --without-模块名     ### 禁用模块
       
      隐藏版本号 、压缩、缓存、防盗链、连续保持、优化工作进程和进程连接数、日志分割、反向代理 

      以上是Nginx防盗链与服务优化配置的示例分析的详细内容。更多信息请关注PHP中文网其他相关文章!

      本站声明
      本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

      热AI工具

      Undresser.AI Undress

      Undresser.AI Undress

      人工智能驱动的应用程序,用于创建逼真的裸体照片

      AI Clothes Remover

      AI Clothes Remover

      用于从照片中去除衣服的在线人工智能工具。

      Undress AI Tool

      Undress AI Tool

      免费脱衣服图片

      Clothoff.io

      Clothoff.io

      AI脱衣机

      Video Face Swap

      Video Face Swap

      使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

      热工具

      记事本++7.3.1

      记事本++7.3.1

      好用且免费的代码编辑器

      SublimeText3汉化版

      SublimeText3汉化版

      中文版,非常好用

      禅工作室 13.0.1

      禅工作室 13.0.1

      功能强大的PHP集成开发环境

      Dreamweaver CS6

      Dreamweaver CS6

      视觉化网页开发工具

      SublimeText3 Mac版

      SublimeText3 Mac版

      神级代码编辑软件(SublimeText3)

      热门话题

      Java教程
      1663
      14
      CakePHP 教程
      1420
      52
      Laravel 教程
      1313
      25
      PHP教程
      1266
      29
      C# 教程
      1237
      24
      nginx在windows中怎么配置 nginx在windows中怎么配置 Apr 14, 2025 pm 12:57 PM

      如何在 Windows 中配置 Nginx?安装 Nginx 并创建虚拟主机配置。修改主配置文件并包含虚拟主机配置。启动或重新加载 Nginx。测试配置并查看网站。选择性启用 SSL 并配置 SSL 证书。选择性设置防火墙允许 80 和 443 端口流量。

      docker怎么启动容器 docker怎么启动容器 Apr 15, 2025 pm 12:27 PM

      Docker 容器启动步骤:拉取容器镜像:运行 "docker pull [镜像名称]"。创建容器:使用 "docker create [选项] [镜像名称] [命令和参数]"。启动容器:执行 "docker start [容器名称或 ID]"。检查容器状态:通过 "docker ps" 验证容器是否正在运行。

      docker容器名称怎么查 docker容器名称怎么查 Apr 15, 2025 pm 12:21 PM

      可以通过以下步骤查询 Docker 容器名称:列出所有容器(docker ps)。筛选容器列表(使用 grep 命令)。获取容器名称(位于 "NAMES" 列中)。

      怎么查看nginx是否启动 怎么查看nginx是否启动 Apr 14, 2025 pm 01:03 PM

      确认 Nginx 是否启动的方法:1. 使用命令行:systemctl status nginx(Linux/Unix)、netstat -ano | findstr 80(Windows);2. 检查端口 80 是否开放;3. 查看系统日志中 Nginx 启动消息;4. 使用第三方工具,如 Nagios、Zabbix、Icinga。

      docker怎么创建容器 docker怎么创建容器 Apr 15, 2025 pm 12:18 PM

      在 Docker 中创建容器: 1. 拉取镜像: docker pull [镜像名] 2. 创建容器: docker run [选项] [镜像名] [命令] 3. 启动容器: docker start [容器名]

      nginx怎么查版本 nginx怎么查版本 Apr 14, 2025 am 11:57 AM

      可以查询 Nginx 版本的方法有:使用 nginx -v 命令;查看 nginx.conf 文件中的 version 指令;打开 Nginx 错误页,查看页面的标题。

      nginx怎么配置云服务器域名 nginx怎么配置云服务器域名 Apr 14, 2025 pm 12:18 PM

      在云服务器上配置 Nginx 域名的方法:创建 A 记录,指向云服务器的公共 IP 地址。在 Nginx 配置文件中添加虚拟主机块,指定侦听端口、域名和网站根目录。重启 Nginx 以应用更改。访问域名测试配置。其他注意事项:安装 SSL 证书启用 HTTPS、确保防火墙允许 80 端口流量、等待 DNS 解析生效。

      nginx服务器挂了怎么办 nginx服务器挂了怎么办 Apr 14, 2025 am 11:42 AM

      当 Nginx 服务器宕机时,可执行以下故障排除步骤:检查 nginx 进程是否正在运行。查看错误日志以获取错误消息。检查 nginx 配置语法正确性。确保 nginx 具有访问文件所需的权限。检查文件描述符打开限制。确认 nginx 正在侦听正确的端口。添加防火墙规则以允许nginx流量。检查反向代理设置,包括后端服务器可用性。如需进一步帮助,请联系技术支持。

      See all articles