IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Nginx优化 -> 正文阅读

[系统运维]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:总数

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-09-04 01:48:04  更:2022-09-04 01:50:34 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/28 19:12:07-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计