Nginx优化

目录

一、隐藏版本号

 二、修改用户与组 

三、缓存时间 

 四、日志切割 

五、连接超时

六、更改进程数

七、网页压缩 

 八、盗链与防盗链

九、Nginx监控模块简介


在企业信息化应用环境中,服务器的安全性和响应速度需要根据实际情况进行响应参数配置,以达到最优的用户体验。
默认的 Nginx 安装参数只能提供最基本的服务,还需要调如网页缓存时间、连接超时、网页压缩等响应参数,才能发挥出服务器的最大作用。

一、隐藏版本号

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

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

添加,关闭版本号

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

添加server_tokens off;

 重启服务,再查看,版本号已隐藏 

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

vim /opt/nginx-1.15.9/src/core/nginx.h

 重新加载

cd /opt/nginx-1.15.9/

./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module

 编译安装

 开启版本信息

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

 查看版本信息

 二、修改用户与组 

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

user nginx nginx; #取消注释,修改用户为 nginx ,组为 nginx

 

 systemctl restart nginx

ps aux | grep nginx

三、缓存时间 

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

        加入新的 location,以图片作为缓存对象

        指定缓存时间,1天

 cd到   /usr/local/nginx/html/  加入一张照片

 访问网页  http://192.168.111.100/图片名字

访问 http://192.168.111.100/1661946089859.png ,双击200响应消息查看响应头中包含 Cahce-Control:max-age=86400 表示缓存时间是 86400 秒。也就是缓存一天的时间,一天之内浏览器访问这个页面,都是用缓存中的数据,而不需要向 Nginx 服务器重新发出请求,减少了服务器的使用带宽。

 四、日志切割 

vim /rizhi.sh

vim /rizhi.sh
#!/bin/bash
 
d=$(date -d "-1 day" "+%Y%m%d")                 #显示前一天的时间
logs_path="/var/log/nginx"
pid_path=`cat /usr/local/nginx/logs/nginx.pid`
 
[ -d $logs_path ] || mkdir -p $logs_path        #创建日志文件目录
 
#移动并重命名日志文件
mv /usr/local/nginx/logs/access.log ${logs_path}/wu.com-access.log-{$d}
 
#重建日志文件
kill -USR1 $pid_path
#删除30天前的日志文件                   
find $logs_path -mtime +30 -exec rm -rf {} \;
#find $logs_path -mtime +30 |xargs rm -rf

  执行并查看

 crontab -e
0 1 * * * /root/fenge.sh   #设置周期性计划

五、连接超时


​HTTP有一个KeepAlive模式,它告诉web服务器在处理完一个请求后保持这个TCP连接的打开状态。若接收到来自客户端的其它请求,服务端会利用这个未被关闭的连接,而不需要再建立一个连接。​KeepAlive 在一段时间内保持打开状态,它们会在这段时间内占用资源。占用过多就会影响性能。


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

         增加请求头 和 请求体

             client_header_timeout 80;    #等待客户端发送请求头的超时时间,超时会发送408错误
             client_body_timeout 80;        #等待客户端发送请求体的超时时间
 

 

​keepalive_timeout​
​指定KeepAlive的超时时间(timeout)。指定每个TCP连接最多可以保持多长时间,服务器将会在这个时间后关闭连接。 Nginx的默认值是65秒,有些浏览器最多只保持 60 秒,所以可以设定为 60 秒。若将它设置为0,就禁止了keepalive 连接。​

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

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

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

六、更改进程数

查看cpu核数

cat /proc/cpuinfo | grep -c "physical"

 查看nginx主进程中包含几个子进程

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

         worker_processes 2;                   #修改为核数相同或者2倍

        worker_cpu_affinity 01 10;           #设置每个进程由不同cpu处理,进程数配2 4 6 8分别为0001 0010          0100 1000


 重启 查看

 ps:01表示启用第一个CPU内核,10表示启用第二个CPU内核
worker cpu affinity 0110;表示开启两个进程,第一个进程对应着第一个CP U内核,第二个进程对应着第二个CPU内核。
###2核cpu,开启4个进程
worker processes 4; 
worker cpu affinity 01 10 01 10;
PS:开启了四个进程,它们分别对应着开启2个CPU内核
###4个cpu,开启4个进程
worker processes 4; 
worker cpu affinity 0001 0010 0100 1000;
Ps:0001表示启用第一个CPU内核,0010表示启用第二个CPU内核,依此类推
 

七、网页压缩 

Nginx的ngx_http_gzip_module压缩模块提供对文件内容压缩的功能,允许Nginx服务器将输出内容在发送客户端之前进行压缩,以节约网站带宽,提升用户的访问体验,默认已经安装可在配置文件中加入相应的压缩功能参数对压缩性能进行优化

vim /usr/local/nginx/conf/nginx.conf
http {
...... 
gzip on;       #取消注释,开启gzip压缩功能
   gzip_min_length 1k;        #最小压缩文件大小
   gzip_buffers 4 64k;        #压缩缓冲区,大小为4个64k缓冲区
   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;  #压缩类型,表示哪些网页文档启用压缩功能
...... 
}

  cd /usr/local/nginx/html
先将1.jpg文件传到/usr/local/nginx/html目录下

cd /usr/local/nginx/html
先将game.jpg文件传到/usr/local/nginx/html目录下
vim index.html
...... 
<img src="game.jpg"/>       #网页中插入图片
</body>
</html>

systemctl restart nginx

 Linux系统中,打开火狐浏览器,按F12,然后按F5
选择 网络 —> 选择 HTML、WS、其他
访问 http://192.168.111.100 ,双击200响应消息查看响应头中包含 Content-Encoding: gzip

 八、盗链与防盗链

1、配置防盗链

源服务器配置

cd  /usr/local/nginx/html
rz -E     #插入两张图片
ls        #查看图片
111.jpg  222.jpg  50x.html  error.png  index.html

 编辑页面vim index.html

<p><em>Thank you for using nginx</em></p>
<img src=111.jpg />   #插入图片格式
<img src=/>
</body>
</html>

  添加地址映射 编辑配置文件vim /etc/hosts

 2 配置盗链机

cd /usr/local/nginx/html
vim index.html
...... 
<img src="http://www.zyy1.com/111.jpg"/>
</body>
</html>
 

 

3 源主机防盗链设置   (注意!!!报错图片格式最好和之前插入页面的图片格式不同

vim /usr/local/nginx/conf/nginx.conf
server
{
......
location ~* \.(gif|jpg|swf)$ {
             valid_referers none blocked *.zyf.com zyf.com;
             if ($invalid_referer) {
             rewrite ^/ http://www.zyy1.com/222.png;     #盗链跳转到另一个界面
             }
    }
.......
}

 验证

在192.168.111.100主机网页中搜索www.zyy1.com 结果正确输出111.jpg

 用192.168.111.90主机网页搜索www.zyy1.com 结果正确输出111.jpg

用192.168.111.100访问www.zyy.com显示出防盗提示错误页面

九、Nginx监控模块简介

1、监控Nginx主要用到以下三个模块
nginx-module-vts:Nginx virtual host traffic status module,Nginx的监控模块,能够提供JSON格式的数据产出。
2、nginx-vts-exporter:Simple server that scrapes Nginx vts stats and exports them via HTTP for Prometheus consumption。主要用于收集Nginx的监控数据,并给Prometheus提供监控接口,默认端口号9913。
3、Prometheus:监控Nginx-vts-exporter提供的Nginx数据,并存储在时序数据库中,可以使用PromQL对时序数据进行查询和聚合。
nginx中的vts模块是非常好用的一款监控模块,能让我们清晰的观测到服务器当下状态。
 

1.关闭防火墙,关闭核心防护!!

 2. 上传解压nginx安装包

tar -zxvf nginx-1.22.0.tar.gz
 
unzip nginx-module-vts-master.zip
 
mv nginx-module-vts-master /usr/local

3.搭建Nginx 

1 yum -y install gcc gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel make
useradd -M -s /sbin/nologin nginx
 
#创建用户是为了让nginx更灵活,赋予更多的权限
 
2 ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --add-module=/opt/nginx-module-vts-master/   

3  make && make install

4 ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

5 nginx -t

4、修改配置文件 

vim /usr/local/nginx/conf/nginx.conf   #配置文件如下

6、http下插入以下内容

log_format main '{ "@timestamp": "$time_local", '
'"@fields": { '
'"uri":"$request_uri",'
'"url":"$uri",'
'"upstream_addr":"$upstream_addr",'
'"remote_addr": "$remote_addr", '
'"remote_user": "$remote_user", '
'"body_bytes_sent": "$body_bytes_sent", '
'"host":"$host",'
'"server_addr":"$server_addr",'
'"request_time": "$request_time", '
'"request_time":"$request_time",'
'"status":"$status",'
'"request": "$request", '
'"request_method": "$request_method", '
'"size":$body_bytes_sent,'
'"upstream_time":"$upstream_response_time"'
'"http_referrer": "$http_referer", '
'"body_bytes_sent":"$body_bytes_sent", '
'"http_x_forwarded_for": "$http_x_forwarded_for", '
'"http_user_agent": "$http_user_agent" } }';

 

7、在location下再加一个location

location / {
            root   html;
            index  index.html index.htm;
        }
        location /status {
            vhost_traffic_status_display;
            vhost_traffic_status_display_format html;
        }

8、重启nginx 服务

9、 查看监控

 

监控列表各项信息
Server main 主服务器
**Host:**主机名
**Version:**版本号
**Uptime:**服务器运行时间
Connections active:当前客户端的连接数 reading:读取客户端连接的总数 writing:写入客户端连接的总数
Requsts accepted:接收客户端的连接总数 handled:已处理客户端的连接总数 Total:请求总数 Req/s:每秒请求的数量
Shared memory:共享内存 name:配置中指定的共享内存名称 maxSize:配置中指定的共享内存的最大限制 usedSize:共享内存的当前大小 usedNode:共享内存中当前使用的节点数
Server zones 服务器区域
zone:当前区域
Requests Total:请求总数 Req/s:每秒请求数 time:时间
Responses:状态码数量 1xx、2xx、3xx、4xx、5xx:表示响应不同状态码数量 Total:响应状态码的总数
Traffic表示流量 Sent:发送的流量 Rcvd:接收的流量 Sent/s:每秒发送的流量 Rcvd/s:每秒接收的流量
Cache表示缓存 Miss:未命中的缓存数 Bypass:避开的缓存数 Expirde:过期的缓存数 Stale:生效的缓存数 Updating:缓存更新的次数 Revalidated:重新验证的缓存书 Hit:缓存命中数 Scarce:未达缓存要求的请求次数Total:总数

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Nginx是一个高性能的Web服务器和反向代理服务器,它具有占用资源少、处理请求快、支持高并发等优点,但是在大流量环境下,需要对Nginx进行优化,以提高性能和稳定性。 以下是一些Nginx优化的建议: 1. 调整worker_processes参数 worker_processes参数是Nginx的工作进程数,建议将其设置为CPU核心数的两倍。 例如,如果你的服务器有8个CPU核心,则可以将worker_processes设置为16。 2. 增加worker_connections参数 worker_connections参数表示每个工作进程可以同时处理的连接数,建议将其设置为1024或更高。 可以通过以下命令查看当前系统的最大连接数: ``` ulimit -n ``` 如果当前值较小,则需要增加该值: ``` ulimit -n 65535 ``` 3. 开启TCP Keepalive TCP Keepalive可以在连接空闲一段时间后,自动发送一个探测包,以保持连接的有效性。 可以通过以下命令开启TCP Keepalive: ``` tcp_nodelay on; tcp_nopush on; keepalive_timeout 60s; ``` 其中,keepalive_timeout表示空闲连接的超时时间。 4. 启用gzip压缩 启用gzip压缩可以减少传输数据量,提高网站的响应速度。 可以通过以下命令开启gzip压缩: ``` gzip on; gzip_min_length 1k; gzip_buffers 16 64k; gzip_http_version 1.1; gzip_comp_level 6; gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript; ``` 其中,gzip_types表示需要压缩的文件类型。 5. 限制请求速率 限制请求速率可以防止恶意攻击和DDoS攻击。 可以通过以下命令限制请求速率: ``` limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s; ``` 其中,$binary_remote_addr表示客户端IP地址,zone表示限制区域,10m表示限制区域的内存大小,rate表示请求速率。 6. 缓存静态文件 缓存静态文件可以减少文件的读取次数,提高网站的响应速度。 可以通过以下命令缓存静态文件: ``` location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ { expires 1d; add_header Cache-Control "public"; } ``` 其中,expires表示文件的过期时间,add_header表示响应头信息。 以上是一些Nginx优化建议,需要根据实际情况进行调整和优化

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值